C operator 簡單使用

2021-08-25 11:18:47 字數 1427 閱讀 3310

類可以使用建構函式將其他型別轉化為此類的物件,比如

my_class a = my_class(int i);
將int型轉化為my_class類的乙個物件。

同樣,也可以使用類的轉換函式將類的物件轉化為其他的型別。 

類的轉換函式應當滿足以下的幾個條件:

#include using namespace std;

class my_class

};int main()

最終的輸出結果如下: 

當然也可以轉化為任意其他的型別,只需要改變轉換函式即可。

但是在定義轉化函式時,要避免出現二義性,比如不要同時提供多個符合條件的轉換函式:

#include using namespace std;

class my_class

operator int()//定義了乙個將類轉化為int的轉換函式

};int main()

在vs上得到如下的報錯資訊:

有多個運算子 "<
當然,若同時需要這兩個轉換函式,這個錯誤也可以通過很多方法來解決,比如顯式的指定要輸出的是哪種型別,而不是讓編譯器自己去選擇:

cout << (double)a << endl;
或者指定其中乙個轉換函式只能顯式的轉換,而不能隱式的轉換

explicit operator double()

都將得到正確的結果。

過載與型別轉換雖然使用的是同乙個關鍵字,但它們在形式上還是有很大的差別的:

過載主要有兩種形式,成員函式形式與友元函式形式。下面舉個例子:

#include using namespace std;

class myclass

myclass(int a, double b):a_(a),b_(b){}

~myclass(){}

int get_a()

double get_b()

myclass operator+(const myclass &adder) const//以成員函式方式過載+

friend myclass operator-(const myclass &a,const myclass &b)//以友元方式過載-

private:

int a_;

double b_;

};int main()

程式的執行結果:

c operator過載 使用

operator是c 的關鍵字,它和運算子一起使用,表示乙個運算子函式,理解時應將operator 整體上視為乙個函式名。這是c 擴充套件運算子功能的方法,雖然樣子古怪,但也可以理解 一方面要使運算子的使用方法與其原來一致,另一方面擴充套件其功能只能通過函式的方式 c 中,功能 都是由函式實現的 一...

C operator 作用及應用

c 的 operator 允許定義新的操作符。乙個種是用於全域性的,一種是屬於類的。對應類的操作符,切記是對類的物件起作用,而非指標 比如 class cwinimpl void paint class cwindow public cwindow m hwnd createwindow m imp...

C operator(過載操作符)

operator 是c 的乙個關鍵字,它和運算子 如 一起使用,表示乙個運算子過載函式,在理解時可將operator和運算子 如operator 視為乙個函式名。使用operator過載運算子,是c 擴充套件運算子功能的方法。使用operator擴充套件運算子功能的原因如下 使過載後的運算子的使用方...