面試題1 賦值運算函式(offer)

2021-07-08 19:23:16 字數 506 閱讀 9553

題目:

如下為型別cmystring的宣告,請為該型別新增賦值運算子函式。

class cmystring;
解答:

在編寫賦值運算子函式時,要注意以下幾個問題:

1.返回型別要為自身物件(*this)的引用,這樣便可以進行連續賦值(條款10)。

2.引數應該為const reference,這樣可以避免由於值傳遞帶來的構造和析構代價(條款20)。

3.需要進行「證同測試」,避免自我賦值(條款11)。

4.要將原來的記憶體釋放掉,避免記憶體洩漏。

5.要注意異常。

下面是解答:

cmystring& cmystring::operator=(const cmystring& str)

//此處會自動呼叫strtemp的析構函式

return *this;

}

上面這段**實現了異常安全性,但是花費了構造和析構的代價。

劍指offer 面試題1 賦值運算子函式

題目 如下為型別cmystring的宣告,請為該型別新增賦值運算子函式。class cmystring 當面試官要求應聘者定義乙個賦值運算子函式時,他對 會關注以下幾點 是否把返回值的型別宣告為該型別的引用,並在函式結束前返回例項自身的引用 即 this 只有返回乙個引用,才可以允許連續賦值。否則如...

劍指offer 面試題1 賦值運算子函式

題目要求為下面乙個類實現乙個賦值運算子的函式 class cmystring 我們要實現任意的乙個類的賦值運算子函式,都要注意一些方面 書上的解法給的確實很完備,而且後來用了一種巧妙的方法讓程式自動釋放記憶體。但我覺得重點是他提到的異常安全性的處理,這裡的話如果我們在new的時候記憶體不夠,而我們又...

《劍指Offer》面試題1 賦值運算子函式

要求 如下型別為cmystring的宣告,請為型別新增賦值運算子函式。class cmystring 測試用例 把乙個cmystring的例項賦值給另外乙個例項 把乙個cmystring的例項賦值給自己 連續賦值 本題考點 對c 基本語法的理解,如運算子過載 常量引用等。考查對記憶體洩漏的理解 對於...