C 中的運算子過載

2022-06-29 09:21:11 字數 863 閱讀 3562

系統給我們提供了很多運算子,但很多時候仍舊滿足不了我們的需求,特別是當我處理自定義型別的時候,系統提供的運算子的功能就不夠用了,這時候我們就用到了運算子過載。

運算子過載的方法是定義乙個過載運算子的函式,在需要執行被過載的運算子時,系統就自動呼叫該函式,以實現相應的運算。也就是說,運算子過載是通過定義函式實現的。換句話說,運算子過載實質上是函式的過載。

c++當中的大部分運算子都可以進行過載,但也有幾個運算子不允許我們進行過載

不能過載的運算子只有5個: 

(1) 成員訪問運算子.

(2) 作用域運算子∷

(3) 條件運算子?:

(4) 成員指標運算子*

(5) 編譯預處理命令的開始符號#

另外還需要注意以下幾點:

總之,當c++語言原有的乙個運算子被過載之後,它原先所具有的語義並沒有消失,只相當於針對乙個特定的類定義了乙個新的運算子。

運算子過載可以使用成員函式和友元函式兩種形式。

只能使用成員函式過載的運算子有:=、()、、->、new、delete。

單目運算子最好過載為成員函式。

對於復合的賦值運算子如+=、-=、*=、/=、&=、!=、~=、%=、>>=、<<=建議過載為成員函式。

對於其它運算子,建議過載為友元函式。

那麼我們如何進行運算子過載呢?

方法很簡單,定義乙個過載運算子的函式,在需要執行被過載的運算子時,系統就自動呼叫該函式,以實現相應的運算。

過載運算子的函式一般格式如下: 

函式型別 operator 運算子名稱 (形參表列)

注意:

C 中運算子過載

運算子過載使得使用者自定義的資料以一種更簡潔的方式工作。比如int x,y 可以為y x y 而 my c1,c2 如果想使得兩個自定義的物件相加,以前只能調 用函式計算它們的和。而現在只要定義了運算子過載就能實現c1 c1 c2.所謂過載,就是重新賦予新的含義。函式過載就是對乙個已有的函式賦予新的...

C 中運算子過載

運算子過載可以寫在類的內部,也可以寫成全域性函式形式,其中運算子 在過載時必須宣告為類的成員函式 而運算子 sizeof 不能被過載 演算法運算子的過載不會改變運算子原有的優先順序。例子 include include include using namespace std class comple...

C 中的運算子過載(一) 運算子過載的概念

概述 運算子過載,就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別。運算子過載 operator overloading 只是一種 語法上的方便 也就是它只是另一種函式呼叫的方式,只是為了方便我們使用,運算子只能運算內建的資料型別,對於自定義的資料型別不能運算,所以我們可以過載...