Copy Construct && Copy assignment(Operator =)

1 让 Copy assginment 返回一个  & *this

       为了实现连锁等式

 

2 让Copy assginment 处理自我复制,这里有两个问题,第一个问题是自我赋值安全性,第二个问题是自我赋值安全性

  <1> 当拷贝时出现深拷贝时,自我赋值就变的十分危险.可以利用 identity test 来解决这种问题,

但是这种做法不具有异常安全性.当 new 失败时,this对象已经被损坏了.

 

   <2>为了达到异常安全性,经常需要使用建立一个临时对象,用来保存原有对象或者保存新建对象.如

这样做牺牲了一些效率,但是同时带来了异常安全与自我赋值安全.

 

3 在Copy assignment与copy构造函数中别忘记拷贝任何一个成员

      <1> 复制所有成员变量,每当加入一个成员,别忘记copy assignment 与 copy构造函数.漏掉可能会花上数倍的时间调试.

 

      <2> 调用所有base class中的copy函数,对于copy construct以及copy assignmet,编译器可不会替你做好事.你只能指望自己了.这个是继承所带来的复杂度提升.也可以做为拒绝深层次继承的理由之一.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值