子类继承了父类,并创建了对象 father *f = new child();
class father{
public:
father(){
cout << "father 构造函数" << endl;
}
virtual~father(){
cout << "father 析构函数"<<endl;
}
};
class child :public father{
public:
child(){
cout << "child 构造函数" << endl;
}
~child(){
cout << "child 析构函数" << endl;
}
};
father *f = new child();
delete f;
创建对象时,函数的执行顺序:父类构造、子类构造、子类析构、父类析构
如果不把父类析构函数写成虚函数同时在子类重写析构函数,那么对象生命周期结束时候,调用子类析构函数就会失败,因为不存在
而此时你重写之后,“查找”父类虚函数指针,找到虚表,动态调用子类析构完成释放
--------------------------------------以上为我目前的理解,如有错误还望指正