c++强制类型转换运算符
static_cast
?用于非多態類型的轉換
?不執行運行時類型檢查(轉換安全性不如 dynamic_cast)
?通常用于轉換數值數據類型(如 float -> int)
?可以在整個類層次結構中移動指針,子類轉化為父類安全(向上轉換),父類轉化為子類不安全(因為子類可能有不在父類的字段或方法)
向上轉換是一種隱式轉換。
dynamic_cast
?用于多態類型的轉換
?執行行運行時類型檢查
?只適用于指針或引用
?對不明確的指針的轉換將失敗(返回 nullptr),但不引發異常
?可以在整個類層次結構中移動指針,包括向上轉換、向下轉換
const_cast
?用于刪除 const、volatile 和 __unaligned 特性(如將 const int 類型轉換為 int 類型 )
reinterpret_cast
?用于位的簡單重新解釋
?濫用 reinterpret_cast 運算符可能很容易帶來風險。 除非所需轉換本身是低級別的,否則應使用其他強制轉換運算符之一。
?允許將任何指針轉換為任何其他指針類型(如 char* 到 int* 或 One_class* 到 Unrelated_class* 之類的轉換,但其本身并不安全)
?也允許將任何整數類型轉換為任何指針類型以及反向轉換。
?reinterpret_cast 運算符不能丟掉 const、volatile 或 __unaligned 特性。
?reinterpret_cast 的一個實際用途是在哈希函數中,即,通過讓兩個不同的值幾乎不以
總結
以上是生活随笔為你收集整理的c++强制类型转换运算符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有推荐哪款瓷砖的安装效果会更适合现代风格
- 下一篇: 纳斯达克指数和道琼斯指数的区别