当我们delete一个动态分配的对象的指针时将执行析构函数。 如果该指针指向继承体系中的某个类型,则有可能出现指针的静态类型与被删除对象的动态类型不符的情况。 例如,当我们delete一个基类类型的指针,则该指针有可能指向的是一个派生类类型的对象,如果这样的话编译器就必须清楚它应该执行派生类的析构函数 总而言之,如果基类的析构函数不是虚函数,则delete一个指向派生类对象的基类指针,将产生未定义行为。