當賦值運算符重載函數中有指針變量的時候,需要保證在發生異常的時候,對象的原有狀態不發生改變。 考慮下面的 未注意的代碼
上面申請內存空間的時候,可能會發生異常,但此時原有的內存空間已經釋放,這樣的話對象的狀態被改變了。 解決1 : 考慮在分配內存空間的時候,先用一個輔助指針,指向新申請的內存空間,等申請成功的時候,再將原有對象的指針空間刪除, 將對象指針指向臨時指針指向的空間。 代碼如下:
方法2 : 使用copy構造函數,建立一個臨時對象,建立成功之后,將臨時對象的指針與原對象交換。 代碼如下:
posted on 2011-05-20 14:31 kahn 閱讀(161) 評論(0) 編輯 收藏 引用
Powered by: C++博客 Copyright © kahn