c 過載自動型別轉換

2021-08-20 21:25:42 字數 1323 閱讀 9548

c++裡有一些隱式型別轉換,比如:double附值給int,內容會被截斷;int和double型別的值進行運算,int自動轉換為double型等。

所謂過載自動型別轉換,就是使用者自己定義類的自動轉換方式。。。。、

我越來越懶了,直接貼**吧。

operator type()
可以過載多個

operator type1()

operator type2()

例如乙個類有三個成員:int a;string s;char c;我們在類中寫道:

operator

int()

//當遇到需要轉換的地方,系統就會按上述規則進行轉換成int型。

注意:所謂轉換,原物件並沒有改變

#include

#include

#include

using

namespace

std;

class vector2

vector2(int x, int y) :x(x), y(y) {}

int x, y;

};class vector3 //無參建構函式

vector3(int x, int y, int z) :x(x), y(y), z(z) {}//有參建構函式

int x, y, z;

operator vector2 ()

operator

double()

};int main()

當同時有成員函式過載運算子友元函式過載運算子過載自動型別轉換時,優先及為:

#include

#include

#include

using

namespace

std;

class vector3

vector3(int x, int y, int z) :x(x), y(y), z(z) {}

int x, y, z;

operator

double()

intoperator+(double d)

};char

operator+(double d, const vector3& v)

char

operator+( const vector3& v,double d)

int main()

C 自動型別轉換

在c 中,如果編譯器看到乙個表示式或函式呼叫使用了乙個不合適的型別,它會執行乙個自動型別轉換,將不合適的型別轉換為合適的型別。對於自定義類,可以通過定義該類的建構函式的方法將其它型別轉換為本自定義類 或者使用運算子將本自定義類轉換為其它型別。對於乙個自定義類,可以為該類定義乙個有乙個引數的建構函式。...

自動型別轉換

1 建構函式轉換 如果定義乙個建構函式,這個建構函式能把乙個型別的物件 或引用 作為它的單個引數,那麼這個建構函式允許編譯器執行自動型別轉換。class one class two void fun two int main 從上面的 我們可以看到通過建構函式可以 輕易的把乙個型別的變數轉換為另乙個...

C 過載型別轉換操作符

在需要做資料型別轉換時,一般顯式的寫法是 cpp view plain copy font size 18px type1 i type2 d i type1 d 顯式的寫型別轉,把d從type2型別轉為type1型別 這種寫法不能做到無縫轉換,也就是直接寫 i d,而不需要顯式的寫 type1 來...