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 來...