깊은 복사1 [ C++ ] 깊은 복사( deep copy )와 얕은 복사 ( shallow copy ) 얕은 복사( shallow copy )는 디폴트 복사 생성자에 의한 멤버 대 멤버의 복사 방식을 말한다. 하지만 이는 멤버 변수가 힙의 메모리 공간을 참조하는 경우에 문제가 된다. 예를 보자. A형 객체 a와 b가 있고, a는 객체 생성 시 초기화를 했다. 반면 b는 a의 디폴트 복사생성자에 의해 멤버 대 멤버 복사가 일어났다. 즉, 얕은 복사가 일어났다. 근데 예상된 결과와는 다르게 소멸자 호출이 한번 일어났다. 이유는 char형 포인터인 name 때문이다. 멤버 대 멤버 복사이기 때문에 객체 a의 name을 가리키는 주소 값을 b도 같이 할당받아, 두 객체가 같은 문자열을 참조하는 문제가 생긴다. 그래서 만약 객체 a가 먼저 소멸된다고 가정하면, a의 소멸자 호출이 일어나면 name을 delete 해.. 2019. 9. 26. 이전 1 다음