本題來自於《劍指offer》第一題,題目:賦值運算子。
給出乙個型別cmystring的宣告,請為該型別新增賦值運算子。
class
cmystring
;
1 賦值運算子函式的返回值應為同型別的引用,否則不能連續賦值。
2 函式傳入引數應為常量應用。以提高效率和避免對引數進行修改。
3 應釋放本型別例項已有的記憶體,否則會照成記憶體洩漏。(原例項裡面m_pdata可能指向一處記憶體,如果不將其釋放就將使用new運算子其指向另一塊記憶體會照成記憶體洩漏)
4 不能自身給自身賦值。第一,自己給自己毫無意義;第二,參考第三點,我們會在函式中釋放本例項的記憶體,釋放後存放在記憶體中的值對計算機來說已經消失了,自然不能賦值。
cmystring& cmystring::
operator=(
const cmystring& str)
劍指Offer 賦值運算子函式
按照自己淺薄的理解,敲了如下 include using namespace std class cmystring 就是定義了!cmystring char m pchar null cmystring const cmystring other cmystring cmystring opera...
劍指offer 賦值運算子函式
題目 如下為型別cmystring的宣告,請為該型別新增賦值運算子函式 class cmystring 思路 類的定義和基本形式 類其實是定義乙個特殊的資料結構,定義了類的物件包括了什麼,以及可以在這個物件上執行哪些操作 class student 成員函式定義 student student vo...
劍指offer 賦值運算子過載
還是有很多點需要注意的。判斷this與傳入的object是否是同乙個物件,相同的話直接返回 this就可以了。判斷傳入物件的陣列是否為空,空的話就不必複製,直接釋放記憶體並將指標置null即可。考慮異常安全。因為new char時如果記憶體不足會丟擲異常,這時安全的做法是先嘗試申請記憶體,申請成功後...