<aside> 💡 목차


</aside>

C++의 객체 복사시에 유의점

이 내용은 C++에서 객체의 복사 방법에 대한 내용입니다. 
객체의 복사 방법에는 얕은 복사와 깊은 복사가 있습니다.

얕은 복사는 원본 객체의 멤버 변수의 값을 그대로 복사합니다. 
따라서, 원본 객체와 복사본이 같은 메모리 주소를 참조하게 됩니다.

깊은 복사는 원본 객체의 멤버 변수의 값을 새로운 메모리에 복사합니다. 
따라서, 원본 객체와 복사본이 서로 다른 메모리 주소를 참조하게 됩니다만,
가르키고 있는 값 자체는 완전히 같습니다.

복사되는 객체에 포인터 변수가 존재할때, 다음처럼 구현해야한다

복사되는 객체에 포인터 변수가 존재할때, 다음처럼 구현해야한다

어떤 특정한 함수가 포인터 변수를 가지고 동적메모리 할당을 했네?

그럼 위와 같은 모양이 되는데, 포인터변수같은경우엔 원본값을 가르키잖아?

그래서 같은곳을 가르킴

a.(얕은복사)
근데 만약 둘 중 하나를 delete하면, 윗놈은 지워진걸 알지만, 아랫놈은 지워진걸 몰라서 메모리누수발생!

b.(깊은복사)
그래서 복사생성자 실행될때, 둘 다 동적메모리값을 복사시킬때
완전 똑같은 값을 가진 데이터를 가르키도록 해야한다
메모리 공유가 없도록!

복사되는 객체에 포인터 변수가 존재할때, 다음처럼 구현해야한다

→ 얕은복사 & 깊은복사 작동 방식