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.
댓글 없음:
댓글 쓰기