본문 바로가기

PL/C & C++

[C++] 깊은 복사 , 얕은 복사

얕은 복사

 

코드에서 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