令operator=返回一个reference to *this。这样做,可以让对象能够做到连续赋值,让你设计的类更像一个内置type。这样返回一个引用是可行,因为*this不是一个局部变量,当离开operator=函数作用域时,*this不会被析构。
在operator=中处理“自我赋值”。编写operator=有四个基本要求:返回reference to *this,以const reference作为参数传递方式,确保深浅拷贝语义合适、处理自我赋值,即处理客户让一个对象=本身的操作,在编译器眼里这是合法的表达式,但是运行时有可能出错,解决之道是在copy之间先判断出入参数(是个引用)所指对象的地址和this是否相等。还有一个更高的要求是保证“异常安全”,这通常可以通过copy-and-swap实现。