型別轉換:將一種型別的值轉換為另一種型別的值
類型別:class、stuct、union型別
標準型別:除類型別外的所有型別,如int
型別種類:
型別轉換有4種:
1)標準型別->標準型別
2)標準型別->類型別
3)類型別->標準型別
4)類型別->類型別
一、標準型別轉變為標準型別
方法:1)隱式轉換
使用場合:程式未顯式型別轉換,但是含有混合運算,賦值語句,函式返回值,形參和實參轉換
2)顯式轉換
使用場合:程式顯式型別轉換
方法:c語言的強制法(int)a和c++的函式法int(a)
注意:當型別名有兩個以上時(unsign int ),不能使用c++的函式法,但是可以使用c語言的強制法,所以以後可以直接使用c的強制法,不會錯
二、標準型別轉化成類型別
方法:建構函式和自定義的過載賦值號=的函式
必備引數:它們都需要有標準型別的引數(這個標準型別就是等號右邊的值型別)
**:
#include using namespace std;
class string
;string::string(int i)
string::string(char* p)
string& string::operator=(int i)
strcontent = new char[len];
memcpy(strcontent,"",len);
return *this;
}string& string::operator=(char* p)
strcontent = new char[len];
memcpy(strcontent,p,len);
return *this;
}void string::show()
;string::string(char* p)
string string::make(char* p)
void string::show()
}
作用:將物件轉換成目的型別的變數,目的型別如果是標準型別也可以是類型別
注意一:型別轉換函式沒有引數、沒有返回型別、但是有返回值(乙個type的例項)。
注意二、型別轉換函式只能定義為類的成員函式,而不能是友元函式(不允許有引數)
注意三、型別轉換函式不可以被超載,因為沒有引數
**:
#include using namespace std;
class point
operator int() //型別轉換函式,轉換為整型 };
void main()
{ point a;
int t=a;//隱式呼叫 型別轉換函式
cout《注意一:一般使用隱式方式,當需要明確指出用哪乙個型別轉換函式時,才使用顯式方式
注意二:注意下面兩種轉換方式:
int a = obj;//使用型別轉換函式進行轉換
obj obj=a; //使用建構函式進行轉換
注意
三、當乙個類既有用於轉換的建構函式,又擁有型別轉換函式
如:建構函式:a(int a);
型別轉換函式:operator int( )
則,obj=obj+n 就有兩種解釋:類和標準型別可以互相轉化,隱式轉換有二義性
解釋一:可以先把物件轉換為數,再兩個數相加
解釋二:可以先把數轉換成類,再相加
解決方法:這是需要顯示使用型別轉換函式:
方法一:先把數變物件,兩個物件再相加
int obj1=n;obj=obj+obj1 兩個物件相加
方法二:先把物件變數,兩個整數再相加
obj=(int)obj+n;
即:使用者型別定義的型別轉換函式,只有無二義性的時候,才能使用隱式轉換
mysql型別轉換c 型別轉換 C 型別轉換
一 簡介 型別轉換 把資料從一種型別轉換另一種型別 我們要求等號兩邊參與運算子必須型別一致,如果不一致,滿足下列條件會發生自動型別轉換或者隱式型別轉換。1.兩種型別相容 例如 int和double 相容 都是數字型別 2.目標型別大於源型別 double int 顯示型別轉換 1.兩種型別相相容 i...
C 型別轉換
在程式中,進行型別轉換是常見的事。那麼在 c 中支援以前語言的型別轉換方法,即用型別名進行強行轉換,例如 object objtest new newtype newtype newvalue newtype objtest 但是這樣轉換,有個嚴重的問題,就是在把 objtest 強轉換成 newt...
C 型別轉換
型別轉換是將一種型別的值對映為另一種型別的值。型別轉換實際上包含有自動隱含和強制的兩種。型別的自動隱式轉換 c 語言編譯系統提供的內部資料型別的自動隱式轉換規則如下 1.程式在執行算術運算時,低型別可以轉換為高型別。2.在賦值表示式中,右邊表示式的值自動隱式轉換為左邊變數的型別,並賦值給它。3.當在...