가상소멸자
-
항목 7:가상 소멸자@ 16. 1 ~ 17. 1/Effective C++ 2015. 1. 14. 23:20
가상 소멸자를 하는 이유는 어떤 함수(파생클래스를 반환하는데 반환인수는 기본클래스) 가 반환하는 포인터가 파생클래스 객체애 대한 포인터라는 점과 이 포인터가 가리키는 객체가 삭제될때 기본 클래스 포인터를 통해 삭제된다는 점 A B : public A 일때 A* return() 일 경우.. A부분은 저 세상(delete)되는데 B부분은 남아 있다 .. 가상함수를 하나라도 가진 클래스는 가상 소멸자를 가져야한다. 가상 함수가 들어가게 되면 객체 크기가 커진다. 어떤 객체에 대해 어떤 가상함수가 호출되려고 하면 호출되는 실제 함수는 그 객체의 vptr(가상함수 테이블 포인터)가 가리키는 vtbl(가상 함수 테이블)에 따라 결정된다 vtbl에 있는 함수 포인터들 중 적절한 것이 연결되는 것. 순수가상소멸자 A클..