C 四種型別轉換

2021-08-15 09:38:53 字數 548 閱讀 6577

首先是static_cast<>,static_cast<>只允許三種轉換:基本資料型別之間轉換,如static_cast(int),還有就是void *指標向其他指標型別的轉換,如static_cast(malloc(sizeof(int))),最後就是同乙個繼承體系下的downcasting和upcasting,upcasting—就是子類向基類物件的轉換。其他情況static_cast會丟擲異常,而c語言的(int *)(& c)這種不會。

然後是dynamic_cast<>,dynamic_cast是專門為了downcasting而設計的。它會試探的將指向基類的指標變為指向子類的指標,如果變換失敗,則返回null。與此同時,downcasting也會配合虛函式實現(注意虛函式表)。

然後是const_cast<>,一種用法是去掉const屬性,比如const a a; const_cast(a).m_a = 2;讓a暫時失去const屬性。還有一種用法是將volatile屬性的變數和其他 常規變數轉換。

最後是reinterpret_cast<>,它可以把乙個型別對映到完全不同的另乙個型別,單純的複製相同位數的位元。

c 四種型別轉換

c風格的強制型別轉換 type cast 很簡單,不管什麼型別的轉換統統是 type b type a。c 風格的型別轉換提供了4種型別轉換操作符來應對不同場合的應用。const cast,字面上理解就是去const屬性。static cast,命名上理解是靜態型別轉換。如int轉換成char。dy...

C 四種型別轉換

include include includeusing namespace std static cast 用法 static cast type id expression 該運算子把expression轉換為type id型別,但沒有執行時型別檢查來保證轉換的安全性。它主要有如下幾種用法 用於...

C 四種型別轉換

1 static cast 1.上行轉換,把派生類的指標或引用轉換成基類,此時是安全的 2.下行轉換,把基類的指標或者引用轉換成派生類,因為沒有動態監測,所以是不安全的 3.顯示型別轉換,如int轉float等 4.任意型別空指標轉任意型別空指標 5.任意型別表示式轉為void型別 如下 int a...