初識C 2 之成員函式的操作符過載

2021-09-25 04:16:09 字數 1384 閱讀 8257

操作符過載分為成員操作符過載(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...