C++ 四種類型轉換關鍵字介紹
阿新 • • 發佈:2019-02-05
C++有四種類型轉換關鍵字,分別是:
(1) . static_cast (2) const_cast (3) reinterpret_cast (4) dynamic_cast
這四種類型轉換關鍵字分別使用在不同的情況下。下文對這四個關鍵字進行比較分析:
(1).static_cast : 可以實現C++中內建基本資料型別之間的轉換,如果涉及到類的話,static_cast只能在相互聯絡的型別中進行相互轉換,不一定包含虛擬函式。
(2).const_cast : 不能在不同種類間轉換。相反,它僅僅把一個它作用的表示式轉換成常量。它可以使一個本來不是const型別的資料轉換成const型別的,或者把const屬性去掉。
(3).reinterpret_cast: 有著和c風格的強制轉換同樣的能力。它可以轉化任何內建的資料型別為其他任何的資料型別,也可以轉換任何指標型別為其他的型別。它甚至可以轉化內建的資料型別為指標,無需考慮型別安全或者常量的情形。不到萬不得已,不要輕易使用。
(4).dynamic_cast :
<1> : 其他三種都是編譯時完成的,dynamic_cast是執行時處理的,執行時要進行型別檢查。
<2> :不能用於內建的基本資料型別的強制轉換。
<3> : dynamic_cast轉換如果成功的話,返回的是指向類的指標或者引用,轉換失敗的話則返回NULL。
<4> : 使用dynamic_cast進行轉換時,基類中一定要有虛擬函式,否則編譯不通過。