• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

17.5 강의 질문있습니다.

22.12.28 16:51 작성 조회수 176

0

int main()
{
    string str1("one");
    string str2;
    str2 = str1; //궁금한 부분.
    str2 = "two";
    cout << str1 << endl;
    cout << str2 << endl;
}

를 했을 때 출력 값으로 str1 은 one 이 나오고 str2는 two 가 나옵니다.

근데 str2 = str1; 은 얕은 복사로 서로 같은 주소를 가르킨다고 생각이 되는데

얕은 복사가 되지 않은 이유는

c++에서 overload로 = 을 깊은 복사로 만들어주었기 때문이라고 이해하면 될까요?

아니면 다른 문법적 이유가 있어서 얕은 복사가 되지 않는 건가요?

답변 1

답변을 작성해보세요.

0

강민철님의 프로필

강민철

2022.12.30

음,

복사의 종류 여부를 떠나 그 바로 다음 줄

str2 = "two";

로써 str2에 "two"를 대입하였기 때문에

str2가 two를 출력하는 것은 자명해보입니다.