C 顯式型別轉換總結

2021-06-25 08:53:00 字數 1048 閱讀 4011

c++中四中顯示型別轉換:dynamic_cast、static_cast、reinterpret_cast和const_cast。

dynamic_cast

dynamic_cast (

expression):把

expression

轉換成type-id型別的物件,type-id必須是類的指標

、類的引用或

者void

*;如果type-id是指標型別,那麼expression也必須是乙個指標,如果type-id是乙個引用,那麼expression也必須是乙個引用。這個主要用在類層次的上行或下行轉換,在上行轉換時和static_cast作用一樣,在下行轉換時具有型別檢查作用,比static_cast安全。注意:基類必須是多型型別的,也就是要有虛函式,否則會編譯出錯。支援交叉轉換。

static_cast

static_cast < type-id > ( expression ):把

expression

轉換成type-id型別的物件,沒有型別檢查。類層次的轉換:上行,安全;下行,沒有動態型別檢查,不安全。主要用於基本型別轉換,把void指標轉換成目標型別的指標,把任何型別的表示式轉換成void型別。不能轉換掉expression的const、volitale、或者__unaligned屬性。

reinterpret_cast

reinterpret_cast

(expression):type-id必須是乙個指標、引用、算術型別、函式指標或者成員指標。它可以把乙個指標轉換成乙個整數,也可以把乙個整數轉換成乙個指標(先把乙個指標轉換成乙個整數,在把該整數轉換成原型別的指標,還可以得到原先的指標值)。

const_cast

const_cast

(expression):該運算子用來修改型別的const或volatile屬性。除了const 或volatile修飾之外, type_id和expression的型別是一樣的。

C 顯式型別轉換

對於型別轉換,我在查資料的時候看到了一種很有意思的解釋,我們可以這樣理解型別轉換 某塊記憶體中的資料是不變的,而型別就是我們戴上的眼鏡,當我們戴上一種眼鏡後,我們就會用對應的型別來解釋記憶體中的資料,這樣不同的解釋就得到了不同的資訊。所謂強制型別轉換實際上就是換上另一副眼鏡後再來看同樣的那塊記憶體資...

c 顯式型別轉換

乙個命名的強制型別轉換具有以下形式 cast name expression 其中,type是轉換的目標型別,而expression是要轉換的值。如果type是引用型別,則結果是左值。cast name是static cast dynamic cast const cast reinterpret ...

C 顯式型別轉換

c 的隱式型別轉換不在此文章講述範圍。c 的顯式型別轉換有 4 種 static cast dynamic cast const cast reinterpret cast。語法 cast name expression type 是轉換的目標型別,expression 是要轉換的值。cast na...