条款11:在operator = 中处理“自我赋值”

一、自我赋值现象

由于指针和引用的存在,还有多态,使得存在自我赋值的现象。

 

二、自我赋值存在的隐患

这里存在的问题是 pb 和 rhs指向同一个对象的时候,,,,,,

 

仍然存在隐患:new失败怎么办?pb指向一块被删除的内存。

 

行得通,但是效率不高

 

三、copy and swap技术

 

这个技巧在《C++ primer》中详细有介绍。

 

总结:

1、确保当对象自我赋值时 operator=有良好行为。其中技术包括比较“来源对象”和“目标对象”的地址、精心周到的语句顺序、以及copy-and-swap

2、确定任何函数如果操作一个以上的对象,而其中多个对象是同一个对象时,其行为仍然正确。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值