在多态性期间识别对象的类型

Pav*_*avi 1 c++ polymorphism

让我们说我有一个class A延伸的BC.现在,由于缺乏多态性,我使用基类指针指向派生类对象.

A *a = new B(); OR A *a= new C();
Run Code Online (Sandbox Code Playgroud)

现在,让我们说我已经执行了一些陈述.现在,我有兴趣识别基类指针指向的对象的类型.如何才能做到这一点?

sha*_*oth 8

直接的方式是使用dynamic_cast:

B* b = dynamic_cast<B*>( a );
if( b != 0 ) {
  // the object can be cast to class B safely
}
Run Code Online (Sandbox Code Playgroud)

但是真正的答案是你不需要在你做多态时 - 你必须使用虚函数并在派生类中适当地实现它们,这样你就可以盲目地调用它们并执行正确的代码.