面試題1 賦值運算子函式

2021-06-28 19:14:21 字數 628 閱讀 7684

/*面試題1

為如下cmysting的宣告,新增賦值運算子函式。*/

class cmystring

;/*注意事項:

1.是否把返回值型別宣告為該型別的引用,並在函式結束前返回例項自身的引用(即*this)。

2.是否把傳入的引數的型別宣告為常量引用。

3.是否釋放例項自身的記憶體。

4.是否判斷傳入的引數和當前的例項是不是同乙個例項。 

經典的解法如下:

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

*///考慮異常安全性的解法:

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

return *this;

}/*由於strtemp是乙個區域性變數,程式執行到if的外面時也就出了該變數的作用域,就會自動呼叫strtemp的析構函式,把strtemp.m_pdata所指向的記憶體釋放掉。由於

之前strtemp.m_pdata指向的記憶體就是例項之前m_pdata的記憶體,這相當於呼叫析構函式釋放例項的記憶體。 

測試用例包含了三種情況:把乙個例項賦值給另乙個例項;把乙個例項賦值給自己;連續賦值。 */

面試題1 賦值運算子函式

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

面試題1 賦值運算子函式

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

面試題1 賦值運算子函式

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