子类继承了父类,并创建了对象 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;
创建对象时,函数的执行顺序:父类构造、子类构造、子类析构、父类析构
如果不把父类析构函数写成虚函数同时在子类重写析构函数,那么对象生命周期结束时候,调用子类析构函数就会失败,因为不存在
而此时你重写之后,“查找”父类虚函数指针,找到虚表,动态调用子类析构完成释放
--------------------------------------以上为我目前的理解,如有错误还望指正
探讨C++中子类继承父类时,使用虚析构函数的重要性。若父类析构函数非虚,子类析构将被忽略,导致资源泄露。通过虚析构,实现动态调用子类析构,确保正确释放资源。
815

被折叠的 条评论
为什么被折叠?



