1.賦值運算子過載函式的引數是函式所在類的const型別的引用
mystr&
operator=(
const mystr& str)
//賦值運算子
return
*this
;}
(1)加const是因為:
(2)用引用是因為:
這樣可以避免在函式呼叫時對實參的一次拷貝,提高了效率。
(3)對於返回值:
一般地,返回值是被賦值者的引用,即*this,原因是
(4)賦值運算子過載函式不能被繼承。
(5)賦值運算子過載函式要避免自賦值
對於賦值運算子過載函式,我們要避免自賦值情況(即自己給自己賦值)的發生,一般地,我們通過比較賦值者與被賦值者的位址是否相同來判斷兩者是否是同一物件(正如例1中的if (this != &str)一句)。
為什麼要避免自賦值呢?
所以,對於賦值運算子過載函式,一定要先檢查是否是自賦值,如果是,直接return *this。
劍指offer學習記錄
原碼 機器碼 反碼 除符號位,各位取反 補碼 反碼加一 此時沒有符號位的概念,即符號位也參與運算 例子 於是補碼的出現,解決了0的符號以及兩個編碼的問題 1 1 1 1 0000 0001 原 1000 0001 原 0000 0001 補 1111 1111 補 0000 0000 補 0000 ...
劍指offer學習筆記
筆記主要記錄方法和知識點 知識點1 負數與補碼 乙個參考 知識點2 移位操作 右移 變小 按位 操作 知識點3 0xffffffff表示32位 1 o logn 的方法 非遞迴的快速冪,用到二進位制表示。在迴圈內注意base base。兩個指標等間距一起走。想明白斷開鍊錶這個事情,相當於操作是在原有...
劍指offer學習筆記2
void matrix vector num,int x1,int y1,int x2,int y2 if x1 x2 if x1 x2 y1 y2 if x2 x1 1 y1 y2 x1 y1 x2 y2 template class stackwithmin else void pop t to...