在赋值运算符中要特别注意可能出现别名的情况,其理由基于两点.其中之一是效率.如果可以在赋值运算符函数体的首部检测到是给自己赋值,就可以立即返回,从而可以节省大量的工作,否则必须去实现整个赋值操作. 另一个更重要的原因是保证正确性.一个赋值运算符必须首先释放掉一个对象的资源(去掉旧值),然后根据新值分配新的资源.在自己给自己赋值的情况下,释放旧的资源将是灾难性的,因为在分配新的资源时会需要旧的资源. 看看下面string对象的赋值,赋值运算符没有对给自己赋值的情况进行检查: class strin…