我想知道基类指针的运行时类型,我知道你可以使用dynamic_cast。 有没有更好的方法?
答案 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<>提示。