? 在析构函数前面加上关键字virtual进行声明,称该析构函数为虚析构函数
? 构造函数不能是虚函数
? 如果一个基类的析构被声明为虚析构函数,则它的派生类中的析构函数也是虚函数
? 声明虚析构函数的目的在于使用delete运算符删除一个对象时,能确保析构函数被正确的执行。因为设置虚析构函数后,可以采用动态连编的方式选择析构函数
//虚析构函数
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
class ClxBase{
public:
ClxBase(){
cout<<"construct Base class!"<<endl;
}
virtual ~ClxBase(){
cout<<"in destructor of class ClxBase"<<endl;
}
void DoSomething(){
cout << "!!!!Do something in class ClxBase!!!" << endl;
}
};
class ClxDerived : public ClxBase{
public:
ClxDerived(){
cout<<"construct Sub class!"<<endl;
}
~ClxDerived(){
cout << "in destructor of class ClxDerived!" << endl;
}
void DoSomething(){
cout << "====Do something in class ClxDerived!====" << endl;
}
};
int main()
{
ClxBase *pTest = new ClxDerived;
pTest->DoSomething();
delete pTest;
cout<<"\nafter delete"<<endl;
//ClxDerived aa;
return 0;
}