c++賦值運算符函數

 請爲該CMyString類型添加賦值運算符函數

wKiom1cWJLbj58pzAACprjaWXpw691.jpg

第二種方法:

wKioL1crOW2y8X8fAABTWzD3Itc861.jpg

wKiom1crOJfT5o7MAAA9nAmVaZY022.jpg

其中運行結果爲s1=s2:

wKiom1cWJRqA7qoqAAArO9_ceEs360.jpg

s2=s1=s3爲:

wKiom1crOPHgd4SYAAAchQbeI_A210.jpg

運行結果分析:

雖然兩種都可以實現賦值運算符函數,但是第一種,如果內存不足導致m_pData是一個空指針,在delete時將會導致程序崩潰,第二種便是一種高效且安全的方法。

總結:(1).在寫程序時應注意new與delete.new[]與delete []搭配使用

      (2).在返回時應引用返回,纔可以連續賦值。

      (3).傳入的參數寫爲常量引用,不僅可以提高效率,減少一次調用複製構造,並且在賦值時不會改變傳入的實例狀態。

      (4).在第一種方法中,一旦在賦值運算符函數內部拋出一個異常(如果內存不足導致m_pData是一個空指針),CMyString的實例不再保持有效的狀態,就會違背異常安全性原則。而在第二種方法則不會。

      


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章