請爲該CMyString類型添加賦值運算符函數
第二種方法:
其中運行結果爲s1=s2:
s2=s1=s3爲:
運行結果分析:
雖然兩種都可以實現賦值運算符函數,但是第一種,如果內存不足導致m_pData是一個空指針,在delete時將會導致程序崩潰,第二種便是一種高效且安全的方法。
總結:(1).在寫程序時應注意new與delete.new[]與delete []搭配使用
(2).在返回時應引用返回,纔可以連續賦值。
(3).傳入的參數寫爲常量引用,不僅可以提高效率,減少一次調用複製構造,並且在賦值時不會改變傳入的實例狀態。
(4).在第一種方法中,一旦在賦值運算符函數內部拋出一個異常(如果內存不足導致m_pData是一個空指針),CMyString的實例不再保持有效的狀態,就會違背異常安全性原則。而在第二種方法則不會。