C 中的運算子過載概念與注意事項

2021-10-05 21:47:30 字數 987 閱讀 1200

所謂運算子過載,就是讓運算子有特殊的含義。

傳統的運算子包括但不限於以下幾種:

1算術運算子(+,-,,/,%,++,–);

2邏輯運算子(&&,||,!)

3關係運算子(==,!=,>=,<=,>,<)

4賦值運算子(=,+=,-=,=,/=,%=,>>=,<<=,&=,|=,^=)注意沒有~=

5位運算子(&,|,^,~,<<,>>)

6雜項運算子(包括取位址符號&,解引用符號*,三目運算子?:,sizeof()取變數大小操作符)

運算子過載的本質,也是一種函式,區別是這種函式定義時候需要使用operator關鍵字進行修飾。它既可以作為類的成員函式,也可以作為非成員函式。

運算子過載函式的定義如下:

以+的過載為例

#include

class

money

void

setmoney

(double money)

money operator+(

const money& m)

private

:double money;

}

以上就是乙個被定義為類的成員函式的操作符過載。

過載運算子還是有很多限制條件的,比如說:

1.不能過載沒有的運算子,比如你自創乙個**,這個運算子是不可以過載的。

2.過載的運算子必須與原來的運算子在優先順序方面,結合性方面,還有運算元數目方面必須保持一致。

3.過載運算子的運算元中至少有乙個是自定義型別,如對int+int這個+運算子的過載是不被允許的。

運算子也不是所有的都可以過載的,下面就列舉出六種不能被過載的運算子:

1成員訪問運算子.

2成員指標訪問運算子.*,

->

*3域運算子::

4sizeof長度運算子

5#預處理運算子6?

:條件運算子

C 運算子過載的注意事項

1 過載操作符沒必要一定是成員函式,還可以是友元函式。2 過載操作符函式為成員函式主要是你需要操作類內部的成員,必須是成員函式或友元函式才行。3 至於由深淺拷貝的原因要使其成為成員函式,這個不知道。4 如果運算子被過載為全域性函式,那麼只有乙個引數的運算子叫做一元運算子,有兩個引數的運算子叫做二元運...

運算子過載的注意事項

在 c 中進行運算子過載時的注意事項 c 規定,運算子過載不改變運算子的優先順序。以下運算子不能被過載 sizeof 過載運算子 賦值運算子 和型別強制轉換運算子 時,只能將它們過載為成員函式,不能過載為全域性函式。必要時需要過載賦值運算子 即進行深拷貝,以避免兩個物件內部的指標指向同一片儲存空間。...

過載運算子的形式和注意事項

運算子過載 函式過載 是c 多型的重要實現手段之一。通過運算子過載對運算子功能進行特殊定製,使其支援特定型別物件的運算,執行特定的功能,增強c 的擴充套件功能。1 不可臆造運算子。2 運算子原有運算元的個數 優先順序和結合性不能改變。3 運算元中至少乙個是自定義型別。4 保持過載運算子的自然含義。一...