检查基类指针类型的最佳方法是什么?

时间:2009-01-19 09:02:13

标签: c++ pointers

我想知道基类指针的运行时类型,我知道你可以使用dynamic_cast。 有没有更好的方法?

2 个答案:

答案 0 :(得分:7)

dynamic_cast只会确认您的猜测,即使这并不完美。如果C继承自继承自A的B,则dynamic_cast<B*>((A*)&theC)将起作用。 typeid将为您提供实际类型,但对某些内容并不是很有用。例如,您无法创建相同类型的新对象。

所以,仍然存在的biq问题是你的真正目标。在适当的OO设计中,您永远不需要知道可以从基类型派生的无限类型集。

答案 1 :(得分:3)

typeid运算符可以做到这一点。它会在恒定时间内为您提供对type_info对象的常量引用。

另请查看devx.com上的Performance of typeid vs dynamic_cast<>提示。