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中的私有成員的資料,所以我們需要...