在C++中,当一个类中有一个函数是虚函数的时候,析构函数最好定义为虚函数。因为C++的多态性,如果析构函数~A()不是虚函数,只会是静态绑定,即只会调用基类的析构函数。
将基类的析构函数定义为虚函数后,当利用delete删除一个指向派生类定义的对象指针时,系统会调用相应的类的析构函数。而不将析构函数定义为虚函数时,只调用基类的析构函数
#include <iostream>
using namespace std;
class A{
public:
A(){
cout<<"A::A()"<<endl; }
virtual void f(){
cout<<"A::f()"<<endl;
}
virtual ~A(){