강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

녹조현상님의 프로필 이미지
녹조현상

작성한 질문수

홍정모의 따라하며 배우는 C++

17.5 string 대입, 교환, 덧붙이기, 삽입

17.5 강의 질문있습니다.

작성

·

267

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

음,

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

str2 = "two";

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

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

녹조현상님의 프로필 이미지
녹조현상

작성한 질문수

질문하기