這篇隨筆我來講解一下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...