改善程序与设计的55个具体做法 day3

 

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

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

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

 

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

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

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

 

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

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

析构函数同理。

 

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

 

posted on   崔好好  阅读(314)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示