1.重載運算符的函數通常格式以下ios
函數類型 operator 運算符名稱 (形參表列)函數
{對運算符的重載處理}spa
例如,想將「+」用於Complex(複數)的加法運算,函數的原型能夠是這樣的:
code
operator+函數表示對運算符+重載。
其中,operator是關鍵字,專門用於定義重載運算符的函數的,運算符名稱就是C++提供給用戶的預約運算符。 對象
注意:函數名是由operator和運算符組成。原型
2.兩個形參是Complex類對象的引用,要求實參爲Complex類對象。string
#include <iostream> using namespace std; struct Point { int x, y; Point(int x = 0, int y=0):x(x),y(y){} }; Point operator + (const Point& A, const Point& B) { return Point(A.x+B.x, A.y+B.y); } ostream& operator << (ostream &out, const Point&p) { out << "(" << p.x << "," << p.y << ")"; return out; } int main() { Point a, b(1, 2); a.x = 3; cout << a + b <<"\n"; system("pause"); return 0; }
對於全局重載操做符,表明左操做數的參數必須被顯式指定。it
****
io
運算符重載函數operator +還能夠改寫的更簡練一些:
編譯
在創建臨時對象過程當中,調用構造函數。return語句將此臨時對象做爲函數返回值。
那麼,咱們將+運算符進行了重載之後,能否將一個常量和一個複數相加呢?好比:
應寫成對象形式,如:
例如,運算符+被重載之後,仍然能夠用於int,float,double,char類型數據的運算,同時又增長了用於定義時數據類型的相加的功能。
編譯系統根據表達式的上下文,即根據運算符兩側(若是是單目運算符則爲一側)的數據類型決定的。
如,對於3+5,則執行整數加法;對於3.4+5.45,則執行雙精度數加法;對於兩個複數類相加,則執行復數加法。