博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
改善程序与设计的55个具体做法 day3
阅读量:4554 次
发布时间:2019-06-08

本文共 562 字,大约阅读时间需要 1 分钟。

 

条款07:为多态基类声明virtual析构函数

任何一本C++语法教材上都会讲这一点(如果没讲,扔掉它),这么做到原因是可以让delete pBase操作能够正确的执行子类的析构函数。

需要说明的是当一个类不是用来当作基类或者不是用来在多态场景下使用时,就不要为这个类的析构函数声明为virtual的,因为这会额外给这类加大体积。

 

条款08:别让异常逃离析构函数

别让析构函数中产生异常,如果非要产生则要么吞下(不传播),要么结束程序。

如果某个操作可能会抛出异常,则应该让其在一个普通函数中执行,而非在析构函数中执行。

 

条款09:绝不在构造和析构函数中调用virtual函数

【在基类构造期间,virtual函数不是virtual函数】,即如果在基类的构造函数中调用了virtual函数,则虽然该virtual函数在子类中不同的实现,则在基类的构造函数中调用的却是基类的virtual函数,如果该virtual函数在基类中没有实现则linkier会给出错误从而让我们有章可循; 当如果该virtual虚函数在基类中有一个实现时,则该错误就很难被发现。

析构函数同理。

 

因此,不要在构造函数和析构函数中调用virtual函数。

 

转载于:https://www.cnblogs.com/cuish/p/5898402.html

你可能感兴趣的文章
linux system函数分析
查看>>
前端优化措施
查看>>
论学习汉语和学习编程的异同点
查看>>
linux img文件压缩及解压
查看>>
我就是一名房地产经纪人!不是中介,谁能明白我们呢?
查看>>
计算php脚本执行时间
查看>>
php静态和抽象
查看>>
Jolt:软件业的奥斯卡
查看>>
机器学习课程笔记 (1)
查看>>
基础数据类型 格式化输出
查看>>
第九周作业
查看>>
解析大型.NET ERP系统 单据编码功能实现
查看>>
互联网创业应该如何找到创意 - RethinkDB创始人Slava Akhmechet的几点建议
查看>>
互联网技术架构给我们的启示
查看>>
hbase redis mysql重要知识点总结
查看>>
取数字(dp优化)
查看>>
web app builder arcgis 自定义弹窗
查看>>
第六天冲刺
查看>>
Golang学习 - strconv 包
查看>>
ERROR util.Shell: Failed to locate the winutils binary in the hadoop binary path
查看>>