條款27 盡量少做轉型操作

2021-07-01 22:13:29 字數 302 閱讀 5832

特別說明dynamic_cast和static_cast兩種

1、static_cast

#include using namespace std;

class base

使用case1時基類必須有虛函式且與繼承類函式同名。

使用case2時基類必須有虛函式,任何虛函式都行。

還有一種是通過vector和std::trl::shared_ptr實現的,effective c++中也說了,但是不是很了解怎麼用,blog 也說明了,可以參考。

條款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...