我想知道一個基類指針的運行時類型,我知道你可以使用dynamic_cast。 有沒有更好的辦法?什麼是檢查基類指針類型的最佳方法?
1
A
回答
7
dynamic_cast只會確認你的猜測,甚至不完美。如果C從繼承自B的B繼承,則dynamic_cast<B*>((A*)&theC)
將起作用。 typeid
會給你實際的類型,但是對於任何事情都不是很有用。例如,您不能創建同一類型的新對象。
所以,biq問題仍然是你的真正目標。在適當的面向對象設計中,你永遠不需要知道可以從基類型派生出的無限類型集合。
3
typeid
運算符做到這一點。它可以在固定時間內返回一個持續參考type_info
對象。
另請參閱devx.com上的Performance of typeid vs dynamic_cast<>小費。
相關問題
- 1. Java:什麼是在運行時檢查變量類型的最佳方法?
- 2. 什麼是檢查類型的最快方法?
- 3. 檢查什麼類型的指針無效*的指向在C
- 4. 什麼類型的指針
- 5. 刪除類型轉換指針的最佳方法
- 6. C++ - 基類指針,方法指針,引用派生類,方法?
- 7. 檢查指針是否已初始化的最佳方法
- 8. 常量方法指針的類型是什麼?
- 9. 處理多種權限類型的最佳方法是什麼?
- 10. URL的最佳列類型是什麼?
- 11. 刪除矢量指針的最佳方法是什麼?
- 12. 清除指針的最佳方法是什麼?
- 13. 按類別查找角元素的最佳方法是什麼?
- 14. 檢測節點響應的內容類型的最佳方法是什麼?
- 15. 動態檢查使用可變繼承的類的類型的最佳方法是什麼?
- 16. 最佳MIME類型方法
- 17. 覆蓋Python類__str__方法的最佳方法是什麼?
- 18. 裝飾Python類方法的最佳方法是什麼?
- 19. 是否有方法指針的基類型?
- 20. 檢查目標C中變量類的最佳方法是什麼?
- 21. 什麼是JavaScript來檢查變量類型的最好辦法
- 22. 基於DWR的類編碼的最佳方式是什麼?
- 23. 的最佳方式基於類型
- 24. 測試泛型類型是字符串的最佳方法是什麼? (C#)
- 25. 檢查視窗是否可見的最佳方法是什麼?
- 26. 檢查FileInputStream是否關閉的最佳方法是什麼?
- 27. 什麼是檢查PDO是否存在的最佳方法
- 28. 什麼是檢查IQueryable結果集的最佳方法是空
- 29. 製作類型集合並檢查它的最佳方法
- 30. Ruby:在method_missing中找到方法類型的最佳方法是什麼?
我必須同意:多態性應該會減少檢查對象類型的需求(除非您正在編寫調試代碼...)+1 – xtofl 2009-01-19 10:07:28