C 型別轉換

2021-05-27 05:58:28 字數 1933 閱讀 6003

型別轉換:將一種型別的值轉換為另一種型別的值

類型別: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.當在...