面試100 30異常安全的復制
面試100 30異常安全的賦值運算符重載函數
當賦值運算符重載函數中有指針變量的時候,需要保證在發生異常的時候,對象的原有狀態不發生改變。
考慮下面的 未注意的代碼































上面申請內存空間的時候,可能會發生異常,但此時原有的內存空間已經釋放,這樣的話對象的狀態被改變了。
解決1 :
考慮在分配內存空間的時候,先用一個輔助指針,指向新申請的內存空間,等申請成功的時候,再將原有對象的指針空間刪除,
將對象指針指向臨時指針指向的空間。
代碼如下:

















方法2 :
使用copy構造函數,建立一個臨時對象,建立成功之后,將臨時對象的指針與原對象交換。
代碼如下:











