c++——抽象类的纯虚析构函数
2021/8/3 22:35:54
本文主要是介绍c++——抽象类的纯虚析构函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一个示例:
class Parent { public: Parent() {} virtual ~Parent() = 0; }; class Child : public Parent { //具体实现 }; int main() { { Parent* p = new Child(); } system("pause"); return 0; }
编译时会报如下错误:
LNK2019 无法解析的外部符号 "public: virtual __thiscall Parent::~Parent(void)" (??1Parent@@UAE@XZ),该符号在函数 "public: virtual __thiscall Child::~Child(void)" (??1Child@@UAE@XZ) 中被引用 vptr E:\c++\study\纯虚析构函数\vptr\vptr\vptr.obj 1
分析:
父类的析构函数定义为了纯虚的析构函数,析构函数的执行顺序为先析构子类,再析构父类。当析构父类的时候,找不到函数体,故编译失败。
解决:
class Parent { public: Parent() {} virtual ~Parent() = 0; //可以这样定义,但是如果作为父类,需要单独定义函数体 }; Parent::~Parent() { }
对纯虚析构函数进行单独定义即可。
这篇关于c++——抽象类的纯虚析构函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20获取apk的md5值有哪些方法?-icode9专业技术文章分享
- 2024-11-20xml报文没有传 IdentCode ,为什么正常解析没报错呢?-icode9专业技术文章分享
- 2024-11-20如何知道代码有没有进行 Schema 验证?-icode9专业技术文章分享
- 2024-11-20Mycat教程:新手快速入门指南
- 2024-11-20WebSocket入门:轻松掌握WebSocket基础
- 2024-11-19WebSocket入门指南:轻松搭建实时通信应用
- 2024-11-19Nacos安装资料详解:新手入门教程
- 2024-11-19Nacos安装资料:新手入门教程
- 2024-11-19升级 Gerrit 时有哪些注意事项?-icode9专业技术文章分享
- 2024-11-19pnpm是什么?-icode9专业技术文章分享