過載操作符函式 :保留字operator後接需要定義的操作符號,有返回型別和形參表
不能過載的操作符有 :: .* . ?:
不能通過連線其他合法符號來建立任何新的操作符
過載操作符必須具有乙個類型別運算元, 以為如果只有內建型別物件的話,會重新定義原來的操作符
操作符的優先順序和結合性是固定的
不再具備短路求值特性
當運算元為成員函式,this指向左運算元,乙個指向左運算元的指標自動繫結到this,而右運算元限定為函式的唯一形參
#include
using namespace std;
class person
void setname(string s)
void outinf( )
ostream& operator<<(ostream& os,const person& p)
int main(int argc,char *argv)
//其中要注意的是 用成員方式過載運算子, 不能改變引數的個數 ,二元運算子用成員過載時, 只需要乙個引數, 另乙個引數由this指標傳入 。如果需要兩個引數,那麼可以在類外面定義,然後在類裡宣告為友元。
如果我們定義了自己的版本,就不能再使用這些操作符的內建含義了。
除非提供了過載定義,否則大部分操作符對類物件沒有意義
過載操作符的時候,
賦值(=)下標()呼叫(())和成員訪問箭頭(->)等操作符必須定義為成員,它們為非成員的時候編譯
時會標記為錯誤
C Primer 過載操作符與轉換
1.不能通過連線其他合法符號來建立任何新的操作符,例如試圖定義乙個operator 操作符以提供求冪操作是非法的 用於內建型別的操作符其含義不能改變,例如 int operator int,int 就是非法的 也不能為任何內建型別定義額外的新的操作符,例如不能定義接受兩個陣列型別運算元的operat...
C 過載操作符與轉換
明智的使用操作符過載可以使類型別的使用像內建型別一樣直觀。過載操作符必須具有至少乙個類型別或列舉型別的運算元,這條規則強制過載操作符不能重新定義用於內建型別物件的操作符的含義。過載操作符並不保證運算元的求值順序,尤其是,不會保證內建邏輯and 邏輯or和逗號操作符的運算元求值,在 和 的過載版本中,...
c Primer,十四,過載操作符與轉換
第十四章 過載操作符與轉換 c 定義了許多內建型別間的操作符和自動轉換。像 等,使用這些很簡單自然,另外在沒學習類之前,貌似我們沒有什麼必要去重新定義乙個 的操作,因為他們已經很好的工作了,在有了類型別之後,我們可能會希望我定義的兩個類物件可以像內建型別那樣實現 操作,完成兩個類物件的相加。過載操作...