面試題1 賦值運算子函式

2021-09-20 07:29:01 字數 665 閱讀 4646

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

class cmystring

;

賦值運算子(=)函式:

cmystring& cmystring:

:operator =

(const cmystring& str)

​ 當記憶體不夠時,new char會丟擲異常,分配記憶體失敗,m_pdata將是乙個空指標,這樣容易導致程式崩潰。

解決辦法:先用new分配記憶體,只有當分配成功,再delete釋放已有的內容。

cmystring& cmystring:

:operator =

(const cmystring& str)

​ 建立臨時例項,交換臨時例項和原來的例項。利用析構函式自動釋放已有的記憶體。

cmystring& cmystring:

:operator =

(const cmystring& str)

//自動釋放臨時例項

return

*this;

}

運算子函式、常量引用

什麼是記憶體洩漏

異常安全性

面試題1 賦值運算子函式

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

面試題1 賦值運算子函式

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

面試題1 賦值運算子函式

題目 如下為型別cmystring的宣告,請為該型別新增賦值運算子函式。class cmystring 介紹過載賦值 過載操作符是一些函式,其名字為關鍵字operator後緊跟需要過載的運算子,比如 operator 表示需要過載 像任何其他函式一樣,操作符函式有乙個返回值和乙個形參表。形參表必須具...