C ++中的运行时类型控制是什么?
答案 0 :(得分:4)
它使您能够在运行时识别对象的动态类型。例如:
class A
{
virtual ~A();
};
class B : public A
{
}
void f(A* p)
{
//b will be non-NULL only if dynamic_cast succeeds
B* b = dynamic_cast<B*>(p);
if(b) //Type of the object is B
{
}
else //type is A
{
}
}
int main()
{
A a;
B b;
f(&a);
f(&b);
}
答案 1 :(得分:4)
这不仅仅是关于dynamic_cast,而是整个RTTI都是它的一部分。了解RTTI的最佳地点是Bjarne Stroustrup C++ Programming Language的第15.4节
答案 2 :(得分:2)
它是dynamic_cast
功能 - 您的代码可以在运行时检测给定的指针或引用是否真的绑定到您期望的类型的对象。
答案 3 :(得分:2)
答案 4 :(得分:0)
您可以使用Interface *并“询问”c ++指针指向的对象类型。 据我所知,这依赖于运行时元信息,需要几个周期 用于存储和搜索此类信息。
查看“typeid”关键字。它提供了最神奇的。
仅使用使用 RTTI,使用std :: type_info typeid 在我看来更像是“真实的东西”。