1、c++是強型別語言,保證型別錯誤不會發生,轉型會破壞型別系統。c語言提供了強制轉型語法t(expn),或者t(expn),c++提供了新式轉型。
const_cast(expn)
static_cast(expn)
dynamic_cast(expn)
reinterpret_cast(expn)
強烈建議使用新式轉型,因為:一是在**中容易識別出來,二是各轉型動作的目標窄化,編譯器容易診斷出錯誤,可以簡單認為,細化分工比原來的萬能方式好。
2、盡量避免轉型,為什麼?轉型往往會影響效率,轉型後出現臨時物件,而應該使用無需轉型的替代方法,比如virtual。
條款27 盡量少做轉型動作
c 中的轉型語法包括舊式轉型和新式轉型。舊式轉換包括 t expression 將expression轉型為t,c風格的轉型動作 t expression 將expression轉型為t,函式風格的轉型動作 新式轉型包括 const cast expression const cast通常被用來將物...
條款27 盡量少做轉型動作
c 的設計目標之一是保證 型別錯誤 絕不會發生。但轉型 cast 破壞了型別系統 type system 舊式轉型,c風格的轉型動作,如下 t tmp 將tmp轉型為t t tmp 同上,函式風格的轉型動作 c 提供四種新式轉型 new style或c style casts 1 const cas...
條款27 盡量少做轉型動作
在談及顯式轉換之前,先簡單說說隱式轉換。int ival 0 ival 3.541 3 doubl向int轉換會丟失精度,編譯器會警告 從double到int轉換可能會丟失資料,結果ival等於6整數3被轉換為double型別,然後執行浮點型別加法操作,得double型別結果6.541,然後將dou...