offer面試題 3(賦值運算子函式的編寫)

2021-08-03 22:30:57 字數 459 閱讀 9392

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

class cmystring

;需要關注的點:

1.是否把返回值的型別宣告為引用,並在函式結束前返回例項自身的引用,只有返回引用才可以連續賦值。

2.是否把傳入引數的值宣告為常量引用,如果傳入的引數不是引用而是例項,那麼從形參到實參會呼叫一次複製建構函式,把引數宣告為引用可以避免無謂消耗,同時,在賦值運算子函式內不會改變傳入例項的狀態,因此應該為傳入的引用引數加上const關鍵字。

3.是否釋放例項自身已有的記憶體,如果忘記在分配新記憶體前釋放自身已有空間,程式將出現記憶體洩漏。

4.是否判斷傳入的引數和當前的例項(*this)是不是同乙個例項:如果是同乙個,那麼則直接返回,

以下是經典的解法:

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

面試題1 賦值運算子函式

面試題1 為如下cmysting的宣告,新增賦值運算子函式。class cmystring 注意事項 1.是否把返回值型別宣告為該型別的引用,並在函式結束前返回例項自身的引用 即 this 2.是否把傳入的引數的型別宣告為常量引用。3.是否釋放例項自身的記憶體。4.是否判斷傳入的引數和當前的例項是不...

面試題1 賦值運算子函式

面試題1 為如下cmysting的宣告,新增賦值運算子函式。class cmystring 注意事項 1.是否把返回值型別宣告為該型別的引用,並在函式結束前返回例項自身的引用 即 this 2.是否把傳入的引數的型別宣告為常量引用。3.是否釋放例項自身的記憶體。4.是否判斷傳入的引數和當前的例項是不...

面試題1 賦值運算子函式

題目 如下型別為cmystring的宣告,請為該型別新增賦值運算子函式。class cmystring 賦值運算子 函式 cmystring cmystring operator const cmystring str 當記憶體不夠時,new char會丟擲異常,分配記憶體失敗,m pdata將是乙...