얕은 복사
코드에서 name은 주소값을 참조하기때문에 복사를 하였더라도 같은 주소를 참조하게된다.
그렇기 때문에 name을 바꿨을때 A,B객체의 name값이 둘다 바뀌게된다.
또한 소멸자가 호출될 때 name은 같은 메모리를 참조하기때문에 한번 delete된 메모리를다시 delete하기때문에 오류가 발생한다.
깊은 복사
이번에는 복사 생성자에서 새로운 메모리를 할당하기때문에 원본과 복사본의 참조 공간이 다르며 소멸자도 오류가 발생하지않는다.
'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 |