特別說明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...