如果不是虚函数, 下面的Main 代码中不会调用 B 的Destructor. // asdfada.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> class A { public: A() { std::cout << "A Construct" << std::endl; } virtual ~A() { std::cout << "A Destruct" << std::endl; } }; class B : public A { public: B() { std::cout << "B Costruct" << std::endl; } ~B() { std::cout << "B Destruct" << std::endl; } }; int _tmain(int argc, _TCHAR* argv[]) { A* b = new B(); delete b; b = NULL; //std::cout << sizeof(double) ; return 0; }