《Inside C 》筆記 十一 運算子過載

2021-08-03 12:16:51 字數 775 閱讀 5998

運算子過載與之前的索引器類似,目的是為了讓語言本身使用起來更方便直接,也是一種語法糖。

運算子過載(operator overloading)

運算子過載的存在,使得現有的各種運算子可以被重新定義並用來操作使用者自定義的資料型別。運算子過載只是語法糖,因為它的本質實際上還是對方法的呼叫,並沒有為語言本身增加新特性。

a)運算子過載的寫法

public static 《返回值》operator《運算子》 (《引數1>,《引數2>…)

還有一些規則:

必須用public static 修飾

不限制返回值的型別,但不推薦返回

bool型別。

引數的數量取決於被過載的運算子的性質,如果是一元運算子,過載時也需要乙個引數,同樣,二元需要兩個。

過載一元運算子時,引數的型別必須是當前類。

過載二元運算子時,則要求第乙個引數的型別是當前類,第二個引數型別不做限制。

b) 能夠被過載的運算子

一元運算子:

+,-,!,~,++,--,true,false

二元運算子:

+,-,*,/,%,&,|,^,<<,>>,==,!=,>,<,>=,<=

c) 等號不能被過載,但如果二元運算子被過載,對應的組合運算子如+=,-=等也等同於被過載。

,和()也無法過載。

d) 為了保證**的可讀性,只有在真正需要過載的時候再去過載。

學習資料:

inside c# by tom archer

《Inside C 》筆記 十一 運算子過載

運算子過載與之前的索引器類似,目的是為了讓語言本身使用起來更方便直接,也是一種語法糖。一運算子過載 operator overloading 運算子過載的存在,使得現有的各種運算子可以被重新定義並用來操作使用者自定義的資料型別。運算子過載只是語法糖,因為它的本質實際上還是對方法的呼叫,並沒有為語言本...

PHP十一種運算子

本文主要展示了可用於 php 指令碼中的各種運算子。運算子是可以通過給出的一或多個值 用程式設計行話來說,表示式 來產生另乙個值 因而整個結構成為乙個表示式 的東西。賦值運算子用於向變數寫值。基本的賦值運算子是 意味著把右邊表示式的值賦給左邊的運算數。分為傳值賦值和引用賦值。傳值賦值 引用賦值 意味...

1273物件導向程式設計上機練習十一(運算子過載)

物件導向程式設計上機練習十一 運算子過載 include include using namespace std class complex complex int a,int b,int c,int d,int e,int f complex operator complex t friend o...