C 強制型別轉換

2021-10-03 19:18:30 字數 776 閱讀 2399

用法:static_cast(expression)

把expression轉換為type-id型別,但沒有執行時型別檢查來保證轉換的安全性

用途:1)類層級結構中基類(父類)和派生類(子類)之間指標或引用的轉換

上下轉換:派生類的指標或引用轉換成基類,安全

下行轉換:基類的指標或引用轉換成派生類,由於沒有動態型別檢查,不安全

2)基本資料型別之間的轉換,如:int轉char,安全性由開發人員保證

3)空指標轉換成目標型別的空指標

4)任何型別表示式轉換成void型別

用法:const_cast(expression)

其中,type-id必須是引用或指標

用法:reinterpret_cast(expression)

其中,type-id必須是乙個指標、引用、內建資料型別、函式指標或成員指標。

用途:1)改變指標或引用的型別

2)將指標或引用轉換成乙個足夠長度的整型

3)將整型轉換為指標或引用型別

用法:dynamic_cast(expression)

注:1)執行時處理,執行時型別檢查

2)不能用於內建基本資料型別的強制轉換

3)type-id必須是指標或引用。轉換成功返回指向型別的指標或引用。失敗返回nullptr

4)類轉換時,上行轉換(派生類指標指向基類指標)安全,下行轉換進行型別檢查。比static_cast更安全。

5)基類中一定要有虛函式,否則編譯不通過。因為執行時型別檢查需要執行時型別資訊。這個資訊儲存在類的虛函式表中。

C 強制型別轉換

四種型別可能很多人都常常忽略就象我一樣,但是有時還是比較有用的。不了解的建議看看,一些機制我也不是十分了解,只是將一些用法寫出來讓大家看看。強制轉化無論從語法還是語意上看,都是c 中最難看的特徵之一。但是基於c風格的轉化的語義的不明確性及其一些潛在問題。強制型別轉化最終還是被c 接受了。1.stat...

C 強制型別轉換

標準c 中主要有四種強制轉換型別運算子 const cast,reinterpret cast,static cast,dynamic cast等等。1 static cast a 將位址a轉換成型別t,t和a必須是指標 引用 算術型別或列舉型別。表示式static cast a a的值轉換為模板中...

C 強制型別轉換

關於強制型別轉換的問題,很多書都討論過,寫的最詳細的是c 之父的 c 的設計和演化 最好的解決方法就是不要使用c風格的強制型別轉換,而是使用標準c 的型別轉換符 static cast,dynamic cast。標準c 中有四個型別轉換符 static cast,dynamic cast,reint...