얕은 복사
코드에서 name은 주소값을 참조하기때문에 복사를 하였더라도 같은 주소를 참조하게된다.
그렇기 때문에 name을 바꿨을때 A,B객체의 name값이 둘다 바뀌게된다.
또한 소멸자가 호출될 때 name은 같은 메모리를 참조하기때문에 한번 delete된 메모리를다시 delete하기때문에 오류가 발생한다.
깊은 복사
이번에는 복사 생성자에서 새로운 메모리를 할당하기때문에 원본과 복사본의 참조 공간이 다르며 소멸자도 오류가 발생하지않는다.
C++ 얕은 복사와 깊은복사
Intro
lesslate.github.io
[ C++ ] 깊은 복사( deep copy )와 얕은 복사 ( shallow copy )
얕은 복사( shallow copy )는 디폴트 복사 생성자에 의한 멤버 대 멤버의 복사 방식을 말한다. 하지만 이는 멤버 변수가 힙의 메모리 공간을 참조하는 경우에 문제가 된다. 예를 보자. A형 객체 a와 b
musket-ade.tistory.com
'PL > C & C++' 카테고리의 다른 글
[C++] auto (0) | 2021.03.09 |
---|---|
[C++] 스마트 포인터, unique_ptr (0) | 2021.03.08 |
[C++] Rvalue 참조 선언자: && (0) | 2021.03.04 |
[C++] 참조형 변수 : & (0) | 2021.03.04 |
[C++] 멤버 이니셜라이저 (0) | 2021.03.04 |