1、什麼是運算子的過載?
運算子與類結合,產生新的含義。
2、為什麼要引入運算子過載?
作用:為了實現類的多型性(多型是指乙個函式名有多種含義)
3、怎麼實現運算子的過載?
方式:類的成員函式 或 友元函式(類外的普通函式)
規則:不能過載的運算子有 . 和 .* 和 ?: 和 :: 和 sizeof
4、友元函式和成員函式的使用場合:
一般情況下,建議一元運算子使用成員函式,二元運算子使用友元函式
1、運算子的操作需要修改類物件的狀態,則使用成員函式。如需要做左值運算元的運算子(如=,+=,++)
2、運算時,有數和物件的混合運算時,必須使用友元
3、二元運算子中,第乙個運算元為非物件時,必須使用友元函式。如輸入輸出運算子《和》
具體規則如下:
運算子建議使用
所有一元運算子
成員函式
= ( ) [ ] ->
必須是成員函式
+= -= /= *= ^= &= != %= >>= <<= , 似乎帶等號的都在這裡了
成員函式
所有其它二元運算子, 例如: –,+,*,/
友元函式
<< >>
必須是友元函式
5. 引數和返回值
當引數不會被改變,一般按const引用來傳遞(若是使用成員函式過載,函式也為const).
對於返回數值的決定:
1) 如果返回值可能出現在=號左邊, 則只能作為左值, 返回非const引用。
2) 如果返回值只能出現在=號右邊, 則只需作為右值, 返回const型引用或者const型值。
3) 如果返回值既可能出現在=號左邊或者右邊, 則其返回值須作為左值, 返回非const引用。
具體參考:(傳播知客)
C 過載運算子
運算子過載是一種形式的c 多型。在c 中,編譯器有能力把乙個由資料 物件和操作符共同組成的表示式,解釋為對乙個全域性或成員函式的呼叫。該全域性或成員函式被稱為操作符函式,通過重定義操作符函式,可以實現針對自定義型別 結構,類 的運算法則,並使之與內建型別一樣參與各種表示式。過載運算子可使 看起來更加...
C 過載運算子
本文主要講述加號運算子 自增運算子 流提取運算子運 流插入運算子 先給出vector類 class vector 建構函式 vector const vector v 拷貝建構函式 vector operator const vector v 過載 vector operator 過載前置自增運算子...
C 過載運算子
過載的運算子是帶有特殊名稱的函式,函式名是由關鍵字 operator 和其後要過載的運算子符號構成的。與其他函式一樣,過載運算子有乙個返回型別和乙個引數列表。如果我們定義的函式為類的成員函式 box operator const box 如果我們定義的函式為非成員函式,那麼我們需要為每次操作傳遞兩個...