本文来自博客园,作者:mkckr0,转载请注明原文链接:https://www.cnblogs.com/mkckr0/p/16211554.html
转载上面大佬
虚析构 就是为了父类指针 delete 释放 堆栈资源时 保证释放会去调用子类析构函数
如
子类* cp = new 子类
父类* fp = cp
delete fp;
在未使用虚析构时
会直接调用静态类型的析构函数 就是明眼上去
看到的 父类类型里的析构函数 而不会调用子类析构函数
使用虚析构后
虚析构函数的地址在虚表里是存有的
虚表表中存有的都是虚函数
所以我们想到了多态性
多态 子类对象的基类指针 调用虚函数 会调用子类的虚函数 (子类重写时虚表中会被覆同名父类函数地址)
析构函数 我们一般是做清理工作的
使用虚析构后 我们才能保证 使用基类指针 delete 时 会去调用子类的析构函数
从而保证 子类自己析构函数中的清理工作能正常进行
2024/1/24 修改