操作符過載分為成員操作符過載(number function)和非成員操作符過載(non-number functon),並不是所有的操作符都可以進行非成員函式操作符過載的,具體可以參考官網:
先上**:
#include using namespace std;
class complex
//內聯函式
inline int imag() const
complex operator+ (complex &n);
};complex::complex(int r = 0 ,int i = 0 )
: re (r),im (i) //建構函式的初始化列表
complex::~complex()
complex complex::operator+ (complex &n)
ostream & operator<
main()
complex complex::operator+ (complex &n)//成員函式的過載
ostream & operator<
上個部落格說過,成員函式的操作符過載就好比是乙個函式,造作符左右兩個變數,分別對應函式的第乙個和第二個形參,這樣是很容易理解的。但是成員函式的操作符過載函式只有乙個引數,這就十分奇怪啦。其實編譯器在編譯到成員函式的時候,會做如下操作:
class a;
class b;
class c;
c = a + b;//編譯前
// c = a.operator+b;//編譯後
這樣就容易理解多了,基於這種原因,成員函式操作符過載的寫法有很多種,如下:
complex complex::operator+ (complex &n)
complex complex::operator+ (complex &n)
complex complex::operator+ (complex &n)
對上面三段**進行一下解釋:
complex(),這個是建立了乙個臨時物件,臨時物件沒有名字,用來傳值之後就會死亡。因此這裡的函式返回用的是傳值,而非傳引用。
n.re,第三種我寫了這種形式,對於private中的成員變數來說,我們在正常使用是不能這樣寫的,但是在定義成員函式就可以這樣使用。
第一種方法我們引入了this指標,之後我們會再來做**。
C 函式過載操作符
c 可以對操作符 operator 進行過載,一般定義在類的成員函式中,以下面的 為例.class point 定義乙個類模板 建構函式 point 析構函式 過載算術操作符 類似 point operator const point other 過載關係操作符 類似 bool operator c...
C 之操作符過載
1.所謂過載,就是賦予其新的意義。函式可以過載,操作符也可以過載。操作符的過載給我們的程式設計帶來了很大的便利,因為操作符只能對基本的資料型別進行操作,而對使用者自定義的類等資料結構型別不支援。因此只能對其操作符進行過載之後,才能更加方便地操作我們自定義的類物件等資料型別。但是值得注意的是並不是c ...
c 之操作符過載
include using namespace std class complex void printcom test add2 test t2 this 函式返回元素 complex operator complex c1 complex operator complex operator in...