過載運算子初識

2021-08-22 08:36:05 字數 1038 閱讀 5896

struct  node

};

friend bool operator < (node a, node b)
這句話是什麼功能呢?

bool operator < (node a, node b)即對node型別(此處是結構體型別)的操作符 < 進行過載,(過載 > 會編譯錯誤)

return a.price>b.price;是過載之後 < 的作用。

舉幾個栗子:

1、優先佇列(struct型別)《的過載

struct  node

};int main()

我們都知道,優先佇列內部是自動按照從大到小的順序排列的,過載《之後,作用與原來相反,所以此時過載之後的優先佇列內是按照price從小到大排列的,需要特別注意一下!

2、普通結構體內排序,省時

struct  node

}a[maxn];

sort(a,a+maxn);

sort(a,a+maxn)預設是按照從小到大的順序排列的,但是由於在結構體內過載了 < ,所以此時sort是按照從大到小的順序排列的。此外還有另一種寫法:

struct  nodea[maxn];

bool cmp(node a,node b)

sort(a,a+maxn,cmp);

但是這麼寫的話有乙個缺點,在一些資料範圍非常大的演算法題目中,這麼寫有可能會超時,所以更好的寫法是在結構體內過載,而不是在寫乙個cmp函式,要慢慢養成這樣寫的好習慣。

struct node//如果再單獨寫乙個cmp會超時

}c[maxn]

之前提到friend是友元,那這種寫法就是成員了。

目前認識淺顯,推薦大佬的部落格,可以有更深入詳細的學習。其中也包括其他運算子的過載。

過載運算子

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