一、自我赋值现象
由于指针和引用的存在,还有多态,使得存在自我赋值的现象。
二、自我赋值存在的隐患
这里存在的问题是 pb 和 rhs指向同一个对象的时候,,,,,,
仍然存在隐患:new失败怎么办?pb指向一块被删除的内存。
行得通,但是效率不高
三、copy and swap技术
这个技巧在《C++ primer》中详细有介绍。
总结:
1、确保当对象自我赋值时 operator=有良好行为。其中技术包括比较“来源对象”和“目标对象”的地址、精心周到的语句顺序、以及copy-and-swap
2、确定任何函数如果操作一个以上的对象,而其中多个对象是同一个对象时,其行为仍然正确。