자식 클래스 객체를 부모 포인터로 가리킬 경우, 부모 포인터에서 정의된 함수만 호출할 수 있다.1
이는 소멸자의 경우에도 마찬가지여서, 자식 클래스의 소멸자가 호출되지 않아 할당 해제해야 할 멤버를 해체하지 못하는 등의 문제가 발생한다.
virtual 키워드를 사용하여 소멸자를 가상 소멸자로 선언할 수 있으며, 부모 클래스가 가상 소멸자를 보유하고 있으면 자식 클래스의 소멸자들도 모두 가상 소멸자가 된다. 그리고 가상 소멸자가 호출되면, 상속의 계층 구조상 맨 아래에 존재하는 자식 클래스의 소멸자가 대신 호출되면서, 부모 클래스의 소멸자가 순차적으로 호출된다.
참고자료