強制型別轉換時有一定風險的,例如把整形轉成指標,基類指標轉成派生類指標,常量指標轉成非常量指標等。
c語言中的強制型別轉換(type cast)有顯式和隱式兩種,顯式一般就是直接用小括號強制轉換。沒有從形式上體現出轉換功能和風險的不同。
低風險的型別轉換,沒有執行時型別檢查來保證轉換的安全性。
(1)用於類層次結構中基類(父類)和派生類(子類)之間指標或引用的轉換。
進行上行轉換(把派生類的指標或引用轉換成基類表示)是安全的;
進行下行轉換(把基類指標或引用轉換成派生類表示)時,由於沒有動態型別檢查,所以是不安全的。
(2)用於基本資料型別之間的轉換,如把int轉換成char,把int轉換成enum。這種轉換的安全性也要開發人員來保證。
(3)把空指標轉換成目標型別的空指標。
(4)把任何型別的表示式轉換成void型別。
裡邊的內容必須是引用或者指標
高風險型別轉換:
(1)改變指標或引用的型別
(2)將指標或引用轉換為乙個足夠長度的整形
(3)將整型轉換為指標或引用型別。
<>裡邊的內容必須是引用或者指標
(1)其他三種都是編譯時完成的,只有dynamic_cast是執行時處理的,執行時要進行型別檢查。
(2)只能用於具有虛函式的基類和派生類之間的指標或引用的轉換。(基類必須擁有虛函式,,因為dynamic_cast是執行時型別檢查,需要執行時型別資訊rtti,而這個資訊是儲存在類的虛函式表中)
(3)執行時檢查,轉型不成功指標返回空指標,引用則丟擲異常。
(4)有額外的函式開銷。
C 四種強制型別轉換
c風格的強制型別轉換 type cast 很簡單,不管什麼型別的轉換統統是 type b type a c 風格的型別轉換提供了4種型別轉換操作符來應對不同場合的應用。const cast,字面上理解就是去const屬性。static cast,命名上理解是靜態型別轉換。如int轉換成char。dy...
C 四種強制型別轉換
1 概述 去const屬性用const cast。基本型別轉換用static cast。多型類之間的型別轉換用daynamic cast。不同型別的指標型別轉換用reinterpreter cast。2 詳解加示例 a const cast 用法 const cast 型別 表示式 用途 刪除con...
C 四種強制型別轉換
c風格的強制型別轉換 type cast 很簡單,不管什麼型別的轉換統統是 type b type a c 風格的型別轉換提供了4種型別轉換操作符來應對不同場合的應用。const cast,字面上理解就是去const屬性。static cast,命名上理解是靜態型別轉換。如int轉換成char。dy...