C 中操作符過載

2021-08-22 07:05:26 字數 1797 閱讀 1640

c++中除了能進行函式過載,還能對操作符進行過載,在分析操作符過載之前,我們先來看看下邊的**:

#include #include using namespace std;

class complex //定義乙個複數類

int geti()

int getj()

};int main()

實則編譯是無法通過的,因為c++中並沒有物件與物件之間直接進行加法的操作,要解決這個問題,就需要我們實現c++中的運算子過載操作。

-c++中的過載能夠擴充套件操作符的功能

-操作符的過載是以函式的方式進行

-用特殊形式的函式擴充套件操作符的功能

c++中通過operator關鍵字可以定義特殊的函式,本質是通過這個特殊的函式來過載操作符

語法如下:

有了以上知識,我們來對上邊**進行修改,在全域性區實現乙個「+」操作符的過載

#include #include using namespace std;

class complex //定義乙個複數類

complex(int m, int n)

int geti()

int getj()

};//在全域性區實現加法操作符過載

complex operator + (complex c1, complex c2)

int main()

我們來編譯輸出如下:

到這裡,其實我們想要的功能已經實現了,但是任然可以做一些優化

在c++中可以將操作符過載函式定義為類的成員函式

-比全域性操作符過載函式少乙個引數(左運算元)

-編譯器優先在成員函式中尋找操作符過載函式

現在我們再來修改一下,把操作符過載在類中實現

#include #include using namespace std;

class complex //定義乙個複數類

complex(int m, int n)

//將操作符過載實現為類成員函式

complex operator + (complex c)

int geti()

int getj()

};int main()

編譯輸出如下:

到這裡,操作符過載,基本介紹完成了,當然可以舉一反三,這裡的「+」,可以換成「-」 、「*」、「/」

總結:-操作符過載是c++的強大特性之一

-操作符過載的本質是通過函式擴充套件操作符的功能

-operator關鍵字是實現操作符過載的關鍵

-操作符過載遵循相同的函式過載規則

-全域性函式和成員函式都可以實現對操作符的過載

c 中 操作符過載

操作符過載 1.有先後順序,如 t3 t1 t2 則t1 t2等價於t1.operate t2 2.對 操作符進行過載時,如aa是有本質區別的。操作符過載就是用函式的方法對乙個操作符進行重新定義,在該函式中定義了操作符所要完成的功能。其中cout是輸出流ostream中的物件 元素 3.a cout...

C 中 操作符過載

在實際程式中遇到一操作符問題,記錄下來方便以後查詢。在寫hashtable資料結構中,遇到操作符過載問題,具體需求如下 1.a x b 如果a x 為空,則新增記錄 2.b a x 如果a x 為空,則提示出錯 對操作符過載之後發現根本不能解決問題,查詢一些資料後發現該問題為過載後的讀寫問題,乙個過...

c 中過載《操作符

在類定義中,有時候我們需要直接利用cout來列印出類中的資料,此刻就需要過載 操作符來實現 假定定義了乙個類time 然後宣告了乙個類 time a cout 這樣的語法肯定是會報錯的,此刻就需要過載operator 要怎麼做呢?首先,在過載函式中,要訪問到類time中的私有成員的資料,所以我們需要...