C 基礎 07 運算子過載

2022-09-04 08:27:10 字數 1056 閱讀 9699

顧名思義,比如過載運算子 + - * / 等,改變這些符號原有的意義。

c++提供了operator關鍵字,它和運算子一起使用,表示乙個運算子函式,理解時應將operator=整體上視為乙個函式名。

運算子的過載實現有兩種形式:

(1)過載為類的成員函式

《函式返回型別》 operator 《運算子》(《形參表》)

(2)過載為類的友元函式

friend 《函式返回型別》 operator 《運算子》(《形參表》)

(1)過載為類的成員函式

class test

; ~test(void){};

test(int _a):a(_a){};

test& operator + (test& _test)//過載操作符,返回該類的乙個例項

; int a;

};

void main()

; ~test(void){};

test(int _a):a(_a){};

friend test& operator + (test& _test1,test& _test2)//過載為友元函式,因為友元函式不是類成員,所以需要傳入2個引數

; int a;

};void main()

{ test t1(1),t2(2),t3;

t3=t1+t2;

std::cout<

需要注意的是過載運算子的時候,返回最好是引用test&而不是test,原因如下:

(1)返回引用的話就是返回本身,返回值就是返回副本(相當於多呼叫一次copy建構函式,效率變慢)

(2)在連續操作時,會出現問題,比如說 (a = b) = c ,a = b 返回的是乙個臨時物件(副本),(a = b) = c  之後c就賦值不到a上了

C 基礎 運算子過載

運算子過載 返回值型別 類名 operator過載運算子 引數列表 include using namespce std class complex ostream operator ostream out,const complex c 過載輸出流 class complex complex pu...

C 基礎 運算子過載

一 運算子過載 1.類是使用者自定義的資料型別,使用運算子過載可以i實現如下邏輯 1 物件1 物件2 物件3,如描述複數的類,描述字串的類。2 提高程式的可讀性。2.過載賦值運算子 1 如果乙個類沒有提供賦值運算函式,則預設提供乙個。2 如果乙個類提供了拷貝建構函式,那麼也要提供乙個過載的賦值運算函...

C 基礎 運算子過載(01)

一方面,在c 中,運算子過載 operator overloading 允許把標準運算子 如 等 應用於自定義資料型別的物件。這樣可以直觀自然地看出自定義資料型別間的運算,並且提高程式的可讀性。另一方面,運算子過載僅僅是一種語法上的方便。預設運算子的本質就是函式的呼叫,而運算子過載就是另一種呼叫。同...