2005년 5월 25일 수요일

C++ 상속과 생성자, 소멸자 호출

Base -> Derived로 상속했을 때.

Derived class를 만들면
생성자는 항상 Base(), Derived() 순으로 호출된다.

Derived class를 Derived pointer에 넣고 delete하면
소멸자는 ~Derived()가 호출되고 ~Base()가 호출된다.

Derived class를 Base pointer에 넣고 delete하면
소멸자는 ~Derived()가 호출되고 ~Base()가 virtual이면 호출되고 virtual이 아니면 Undefined이다.

@ class를 상속할 생각이라면 소멸자는 virtual로 만들자.

참고)
Effective C++, Item 14:  Make sure base classes have virtual destructors.

댓글 없음:

댓글 쓰기