깊은 복사
-
[객체의 복사와 대입 연산자] 의도하는 동작이 있다면 구현하라개발/C·C++ 2021. 4. 26. 12:02
primitive type이 자연스럽게 연산이 가능한 이유는 이미 구현되어 있기 때문입니다. = 연산자를 사용해 값을 초기화할수도 있고 복사도 할 수 있습니다. 우리는 그냥 사용하기만 하면 됩니다. 우리가 정의한 클래스도 초기화 하고 복사도 하며 대입도 됩니다. 복사와 대입 기능을 따로 구현한 적 없는데 되긴 됩니다. 친절은 여기까지입니다. 컴파일러가 자동으로 수행해주는 복사와 대입은 값 복사만 해줍니다. 만약 동적으로 메모리를 할당한 포인터 변수가 있다면 값 복사는 매우 치명적인 오류의 원인이 됩니다. 객체가 여러 개인데 그 객체의 포인터가 가리키는 메모리가 한 곳이라고 생각해보세요. 끔찍합니다. 어느 한 객체의 포인터 변수만 해제가 되어도 나머지 객체의 포인터 변수는 dangling pointer가 ..