让我们说我有一个class A
延伸的B
和C
.现在,由于缺乏多态性,我使用基类指针指向派生类对象.
A *a = new B(); OR A *a= new C();
Run Code Online (Sandbox Code Playgroud)
现在,让我们说我已经执行了一些陈述.现在,我有兴趣识别基类指针指向的对象的类型.如何才能做到这一点?
直接的方式是使用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)
但是真正的答案是你不需要在你做多态时 - 你必须使用虚函数并在派生类中适当地实现它们,这样你就可以盲目地调用它们并执行正确的代码.