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