C 型別轉換機制

2021-06-07 18:34:02 字數 1051 閱讀 4184

可以分為隱式型別轉換和顯示型別轉換,顯示型別轉換也稱為強制型別轉換(cast),有四種名字命名的強制型別轉換操作符:static_cast、dynamic_cast、const_cast、reinterpret_cast。

隱式的型別轉換比較常見,在混合的型別表示式中經常發生。最簡單的為整型提公升,對於所有比int小的整型,包括char、signed char、unsigned char、short和unsigned short如果該型別的所有可能值都能包容在int內,它們就會被提公升為int型,否則,將被提公升為unsigned int。在包含short和int型別的表示式中,short轉化為int,如果int型別足夠表示所有的unsigned short型別,則unsigned short型別被轉化為int,否則將轉化為unsigned int。32位的機器上long和int通常用乙個字長來表示,因此當表示式中包含unsigned int和兩種型別,其運算元都應轉換為unsigned long型。

static_cast

編譯器隱式執行的任何型別轉換都可以由static_cast顯示完成。

#include using namespace std;

int main()

};class derived:public base

void fun()

};int main()

輸出為:

this is derived

this is a derived fun

也可以將基類引用轉換為派生類引用,dynamic_cast(val)這裡,type是轉換的目標型別。只有當val實際引用乙個type型別的物件,或者val是乙個type派生型別的物件的時候,dynamic_cast操作才將運算元val轉換為想要的type&型別。因為不存在空引用,所以不可能對引用使用用於指標強制型別轉換的檢查策略,當轉換失敗的時候,丟擲乙個bad_cast異常。

void f(const base &b)

catch (bad_cast)

}

參考:

c++ primary

C 四種常用的型別轉換機制

在c語言中,我們常常使用 type expression 這樣的語句來把expression表示式強制轉換為type型別的資料,而在c 中我們引用了四種型別轉換操作符 const cast,static cast,dynamic cast和reinterpret cast 1 static cast...

Scala Scala隱式轉換機制

概述 scala implicit關鍵字詳解 隱式轉換函式 隱式類 隱式引數 隱式值 implicit是scala中的乙個關鍵字,關於它有著豐富的用法,使得scala更靈活和容易擴充套件。implicit def int2str x int string x.tostring這段 宣告了乙個函式in...

TCP傳輸連線有限狀態機轉換機制

10.3.5 tcp 連線的狀態轉移 從表10 6 中可以看出,tcp socket 服務原語只有 8個,比 osi rm 中定義的傳輸層服務原語還要少,但是在這8種 tcp socket 服務原語中,有的原語又可以有不同的狀態,如表 10 8 所示。我們把在 tcp傳輸連線的建立和釋放中的通訊雙方...