static_cast<type_id>(expr)
用於基本類型的轉換,也可以將繼承關係的對象指針或引用之間進行上下轉型,但是在沒有運行時類型檢查的情況下,不保證類型安全。
static_cast<type_id>(expr)
動態轉換用於在繼承體系中進行安全的上下轉型。它允許在運行時判斷指針或引用的實際類型,並檢查轉換是否合法。如果轉型失敗,dynamic_cast將返回空指針(對於指針)或引發std::bad_cast異常(對於引用)。
const_cast<type_id>(expr)
去掉表達式的(底層)const性質。
reinterpret_cast<type_id>(expr)
重新解釋轉換是一種較爲低級和危險的轉換,它將一個指針或引用轉換爲不相關類型的指針或引用,用另一個類型的解釋方式解釋表達式的底層二進制數據,這種轉換沒有類型檢查,所以要非常小心使用,以避免潛在的錯誤和未定義行爲。