顧名思義,比如過載運算子 + - * / 等,改變這些符號原有的意義。
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 允許把標準運算子 如 等 應用於自定義資料型別的物件。這樣可以直觀自然地看出自定義資料型別間的運算,並且提高程式的可讀性。另一方面,運算子過載僅僅是一種語法上的方便。預設運算子的本質就是函式的呼叫,而運算子過載就是另一種呼叫。同...