effective c++之构造 析构 赋值运算

(一) 了解C++ 默默编写并调用哪些函数 (只有当被调用到,才会默认生成,否则是没有的)

default构造函数(当没有显示的提供任何构造函数时才会有)

default析构函数

copy构造函数

copy assign构造函数

 

(二) 若不想使用编译器自动生成的函数,就该明确拒绝

将相应的函数声明为private就是

 

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

防止当用基类指针指向子类时,delete该指针,调用的是基类的析构函数,造成子类部分内存可能没析构到.另外,注意添加virtutal会增加类空间体积,因为需要一个vptr指向虚函数表的指针.

(四) 别让异常逃离析构函数

因为在析构的过程中抛出异常,会导致不明确行为发生.看书到这,一兄弟突然发来端午祝福短信,一时间往事涌上心头,遂产出:

一别数载往事忆,

天南地北皆兄弟;

闻兄七十千克余,

思见甚急 甚急.

 

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

因为构造过程中,该对象还未形成,如果有些间调用virtual函数,肯定是调用的基类版本,同理在析构函数中..

 

(六) operator = 返回一个reference to *this

这个不是强制的,但所有内置和标准程序库提供的类型如string, vetor等都遵守这条,随众吧.

 

(七) operator =中处理自我赋值

添加证同测试

if(this ==&rhs) return  *this;

 

(八) 复制对象时勿忘其每一个成分

1.      确保复制所有local成员变量;

2.      调用所有base classes内的适应的copying函数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值