C 操作符過載

2021-07-13 08:36:19 字數 1209 閱讀 1041

操作符可以過載,操作符的過載解決了各種型別操作。比如,一般型別+類  ,類+一般型別  ,類+類,類+類+一般型別+類等。操作符的過載和一般成員函式的過載格式並沒有不同。

1.處理混合運算時,按照運算子優先順序來,「+」 ,「-」 ,「*」,"/"等這幾個算術運算優先順序在類中也是如此。

2.用引用(&)可以提供效率,以下幾個操作符函式均用引用。const關鍵字防止傳遞的輸入引數被意外修改。

class point

point()

int getx();

int gety();

point operator+(const point &other);   //處理point+point   成員函式

friend point operator+(const point &p1,int i); //point+int  全域性函式 可改寫為成員函式

friend point operator+(int i,const point &p1);//int + point 全域性函式

friend point operator+(const point &p1,const point &p2) ;//操作符全域性函式處理point+point

};point operator+(const point &p1,int i)

point operator+(int i,const point &p1)

point operator+(const point &p1,const point &p2)

point point::operator+(const point &other)

int main()

int point::gety()

結果:18 15

7+n+pp+1 按照加法運算法則從左向右優先順序,(7+n)呼叫全域性函式int+class得到物件point 再((7+n)+pp)物件加物件,這裡還不明確到底是呼叫了全域性函式還是成員函式,最後再呼叫point+int全域性函式得到最終結果。

另外需要注意的是,物件+物件,  int+物件,或者物件+int等運算方式是使用者自己定義的,如何加是使用者決定的,比如int+物件,我決定讓int分別和物件的各個成員變數相加,返回。使用者也可以定義其他方式。所以,使用者程式設計中,也可以將int轉換為物件再利用物件+物件的方式相加。比如:

在int+物件中(i+p1)使用者規定i分別和物件的各個成員變數相加,於是定義乙個物件point px(i,i);問題轉換為px+p1.

C 操作符過載

1.作為成員過載 class myclass public myclass operator const myclass d cons friend myclass operator const myclass a1,const myclass a2 關於返回值型別的討論 呼叫者堆疊裡返回乙個物件效...

C 過載操作符

過載操作符 一 過載操作符的定義 1.過載操作符的結構 返回型別 operator 需要過載的操作符 形參列表 注意 形引數目應和運算元數目相同。2.過載操作符的幾條注意事項 1 過載的操作符名不能通過連線其他合法符號來建立任何新的操作符。如 2 過載操作符必須具備至少乙個類型別或列舉型別的運算元。...

c 操作符過載

過載操作符 一 限制 1 不能增加新的操作符 2 有些操作符不能過載,如.物件中的訪問成員 作用域解析操作符 sizeof 三元操作符 3 不能改變操作符的元數,元數是指與操作符相關的引數或運算元個數。比如一元操作符 只能應用於乙個操作符 4 不能改變操作符的優先順序 5 不能重新定義內建型別的操作...