過載運算子語法講解

2022-03-20 06:53:57 字數 1087 閱讀 5387

這篇隨筆我來講解一下c++語言中過載運算子的相關知識。

這是乙個比較哲學的問題:我們為什麼要過載運算子?

理由就是,我們c++語言中已經給出的運算子(包括算數運算子和邏輯運算子)只是針對c++語言中已經給定的資料型別進行運算,假如我們想要對我們的自定義資料型別進行運算的話,則需要過載運算子,我們可以把過載運算子理解成對已有的運算子的一種重新定義。

比如:

double a,b,c;

a=1/3;

b=1/2;

c=a+b;

printf("%lf",c);

這段程式輸出的肯定不是兩個分數相加的結果。

這時候我們就可以過載運算子+。

語法格式如下(非常重要)

《返回型別》 operator 《運算子符號》(《引數》)

這裡我們舉乙個例子。

在優先佇列(priority_queue)中,儲存的元素較大的會被放到堆頂。如果存的是int或者string等型別還好辦(因為他們本身就可以互相比較大小),如果是我們自定義的結構體型別,那就需要過載《運算子。

比如:struct node

//定義結構體

bool operator <(const node &a,const node &b)

{ return a.x注:這裡的結構體儲存了乙個整型變數id,兩個長浮點變數x,y,表示座標。

這裡的過載運算子先比橫座標後比縱座標。

以下運算子不可過載:

關係運算子"."

成員指標運算子".*"

作用域運算子"::"

sizeof運算子

三目運算子"?:"

過載運算子限制在c++語言中已有的運算子範圍內的允許過載的運算子之中,不能建立新的運算子。

運算子過載實質上是函式過載。

好了,關於過載運算子的基本知識基本已經被科普完了,這是c++語言程式設計中非常非常常見的一種操作手段。請大家務必重視並用大量例題熟練掌握。

下課~祝同學們ak ioi!!

過載運算子

題目描述 定義乙個矩形類,資料成員包括左下角和右上角座標,定義的成員函式包括必要的建構函式 輸入座標的函式,實現矩形加法,以及計算並輸出矩形面積的函式。要求使用提示中給出的測試函式並不得改動。兩個矩形相加的規則是 決定矩形的對應座標分別相加,如 左下角 1,2 右上角 3,4 的矩形,與 左下角 2...

過載運算子

include include using namespace std class test test const int a v a test const test t1 v t1.v 以下過載小於號 比較兩個物件的大小 bool operator const test t1 const 比較物件...

過載運算子

1.當乙個過載的運算子是成員函式時,this繫結到左側運算物件。成員運算子函式的引數比運算物件的數量少乙個。非成員函式呼叫等價於 data1 data2 普通表示式 operator data1,data2 等價的函式呼叫成員函式呼叫等價於 data1 data2 普通表示式 data1.opera...