Effective C++ (II)

第7条:    要将多态基类的析构函数声明为虚函数

l         有一些类是设计用作基类的,但是它们并未被设计成多态类,如uncopyable[1]

 

第8条:    防止因异常而中止析构函数

l         永远不要让析构函数引发异常。如果析构函数所调用的函数会抛出异常的话,那么析构函数中要捕捉到所有异常,然后忽略它们或者终止程序。[2]

l         在一次操作中,如果一个类的使用者有能力对抛出异常作出反应,那么这个类应该提供一个常规的函数(而不是析构函数)来进行这一操作。

l         如果析构函数中确实出现异常,那么应该重新设计接口。将异常不安全代码抽出来成为普通成员函数,始终保证如果想析构,就应该是安全的析构。

 

第9条:    永远 不要在构造或析构的过程中调用虚函数,因为这样的调用永远不会转向当前执行的析构函数或构造函数更深层的派生类中执行。

 

第10条:    让赋值运算符返回一个指向 *this 引用。重载运算符要遵循惯例。

 

第11条:    operator= 中要考虑到 自赋值问题。if &other_obj == thisreturn *this;

 

第12条:    要复制整个对象,不要遗漏任一部分。特别是不要忘记基类。

 



[1] 个人按:需不需要将析构函数声明为虚函数,是由程序正确运行的需要来决定的。显然,如果基类中含有数据成员,那么必须声明为虚函数,不然该数据成员不会被析构。

[2] 这是异常公理之一。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值