
본 포스팅은 개인 공부를 위한 학습 내용을 정리한 것 입니다.
// 1
class Empty{};
// 2
class Empty {
public:
Empty() { ... } // 기본 생성자
Empty(const Empty& rhs) { ... } // 복사 생성자
~Empty() { ... } // 소멸자
Empty& operator= (const Empty& rhs) { ... } // 복사 대입 연산자
};
사실 1번과 2번은 같은 코드다.
이들은 모두 public 멤버이며 inline 함수이다.
Empty e1; // 기본 생성자, 소멸자
Empty e2(e1); // 복사 생성자
e2 = e1; // 복사 대입 연산자
각 필요하다고 판단되는 상황이다.
소멸자는 이 클래스가 상속한 기본 클래스의 소멸자가 가상 소멸자로 되어 있지 않으면 역시 비가상 소멸자로 만들어진다.(항목 7 참조)