1) 가상 소멸자가 없는 경우

Base : 부모클래스
Derived : 자식클래스
로 선언한 상태에서,
main함수에서
Base* ptr = new Derived(); 로 선언을 하였다.
ptr은 Base의 클래스 타입이지만, 가리키는것은 Derived()라는 객체를 가리킨다. 이것이 upcasting(업캐스팅)이다.
노란색 박스의 실행결과를 보면
"Base Destructor"만 실행이되는데,
이것은 virtual지정어가 없는 가상함수를 호출할 때는
부모클래스의 포인터를 통해 자식클래스의 객체를 다룰 때는 "정적바인딩"이
적용된다.
그러므로, 부모클래스에서 정의된 함수만 호출이된다.
그러나,

부모클래스에서 virtual지정어를 통한 가상함수를 호출할 때는
부모클래스의 포인터를 통해 자식클래스의 객체를 다룰 때 "동적바인딩"이
적용됨으로서, 자식클래스도 같이 호출이 된다.
단, 자식클래스부터 호출이 되는 이유에 대해서 설명하자면,
자식클래스가 부모클래스에대한 자원을 안전하게 접근할 수 있기 때문이다.