C++编程规范------demo3

terms 7 : Declear destructor virtual in polymorphic base class

为多态基类声明virtual析构函数

base class 和derived class ,在设计factory 函数时,我们通过函数获取一个对象指针,这个指针往往是指向derived class 的base class 指针,此时当销毁这个指针时,(如果未声明base class 的析构函数为virtual)系统调用的base class指针的析构函数,而不是derived class的析构函数(我们知道继承时,创建对象往往是先调用基类的构造函数,然后是派生类的构造函数,而析构时恰恰相反,先析构派生类,然后才是基类),因此,此时派生类的某些内容可能并未销毁,造成内存泄露。因此,最好为多态基类声明virtual析构函数,进一步,如果一个函数具有虚函数或者纯虚函数,我们就应该为其声明virtual析构函数。

另一方面,当我们需要一个abstract class时,但是我们有没有一个纯虚函数,这时候我们可以将析构函数声明为纯虚函数。

注:每一个带有virtual函数的class都有一个vtbl, 虚函数表,因为这个表的存在,类对象的占用空间可能会增大50~100%,(据说代码的移植性将不存在)

terms 8 : Prevent exceptions from leaving destructors

别让异常逃离析构函数

通过两个办法避免析构函数遭遇异常时吐出异常,析构函数自己将异常处理掉,或者结束进程

term 9 : Never call virtual functions during construction or destruction

绝不在构造和析构过程中调用virtual函数

在析构和构造中调用的virtual函数通常不是自己想要的,特别是在多级继承中,因此不要在构造和析构时调用virtual函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惜日短

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值