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,编译器可不会替你做好事.你只能指望自己了.这个是继承所带来的复杂度提升.也可以做为拒绝深层次继承的理由之一.