C 中四種強制型別轉換操作符之間的區別

2021-05-22 19:20:07 字數 538 閱讀 3737

先介紹const_cast和reinterpret_cast:

const_cast用於消除型別中的const, volatile, __unaligned屬性。

reinterpret_cast主要用於轉換不相容的資料型別,特別是在指標型別和非指標型別之間進行轉換,當然它也可以用於轉換指標之間的轉換。

再介紹一對相對立的static_cast和dynamic_cast:

它們都是c++風格的強制型別轉換,不過不具備上面2中轉換的特性,即:不能在指標型別和非指標型別之間進行轉換,也不能消除型別中的const和volatile屬性。

它們的區別在於:static_cast在編譯時刻就驗證被轉換的變數與目標型別之間是否相容,如果型別轉換不合理,就會導致編譯時刻錯誤;dynamic_cast在執行時刻對強制型別轉換進行檢查。當指標無效時,返回0,若是無效的引用強制型別轉換就發生bad_cast異常。

另外,dynamic_cast不能用於轉換沒有繼承關係的型別,如int轉換到double型別。

詳情可以參加《more efective c++》第二條。

C 四種強制型別轉換操作

1 reinterpret cast reinterpret cast 轉換乙個指標為其它型別的指標,也允許從乙個指標轉換為整數型別,反之亦然。這個操作符能夠在非相關的型別之間轉換。操作結果只是簡單的從乙個指標到別的指標的值的二進位制拷貝。在型別之間指向的內容不做任何型別的檢查和轉換。reinter...

C 中四種強制轉換符

c 中四種強制轉換符分別為 const cast,static cast,dynamic cast,reinterpret cast 在c 中這是乙個很常見的話題,特別是對於新人。然後就 一般來說,在型別轉換中會出現以下幾種情況 int 轉換 float 常出現在數學計算中,比如 提高計算的精度等 ...

C 中四種強制型別轉換

c 同時提供了四種新的強制轉型形式 通常稱為新風格的或 c 風格的強制轉型 dynamic cast expression reinterpret cast expression static cast expression const cast const cast 允許新增或刪除指標或引用表示式...