賦值操作符相關(guān)
賦值操作符相關(guān)
一 令operator = 返回一個reference * this
1 先看一個遵循的標(biāo)準(zhǔn)協(xié)議













2 不光適用于標(biāo)準(zhǔn)形式,也適應(yīng)于所有的賦值操作
比如適應(yīng)于 += , -= ,*=
綜上: 令賦值操作符返回一個reference to * this 。
二 在operator= 中處理 自我賦值
考慮下面的代碼:








上述代碼有一個問題,當(dāng)實現(xiàn)自我賦值的時候,pb對象已經(jīng)被刪除,此時又根據(jù)pb對象創(chuàng)建一個新的對象,造成錯誤。
解決方法一:
在刪除之前添加一個證同測試:
代碼如下:











但是上述代碼若new 代碼處發(fā)生異常,則很可能導(dǎo)致返回一個指向已刪除內(nèi)存區(qū)域的指針。
解決方法2:
可以先創(chuàng)建一個新的pb,然后再對舊pb進(jìn)行刪除。











解決方法3:
使用copy and swap 技術(shù)










