new로 생성해준 것을 delete로 할당 해제 해주는 것과 마찬가지로 메모리 누수(Memory Leak)을 방지하기 위해 소멸자를 호출한다.
~클래스명();
컴파일러는 기본적으로 복사 생성자를 자동으로 생성해준다. 하지만 자동으로 생성된 복사 생성자는 얕은 복사(shallow copy)밖에 하지 못하므로, 다음과 같은 문제가 생긴다.
Marine::Marine(const Marine& m) {
this.name = m.name; // shallow copy
}
주소 값이 아닌 진짜 변수값을 복사하여 문제 해결
Marine::Marine(const Marine& m) {
char* name = new char[strlen(m.name) + 1];
strcpy(name, m.name);
}