假设我有一个 class A
,它由 B
和 C
扩展。现在,由于缺乏多态性,我使用基类指针指向派生类对象。
A *a = new B(); OR A *a= new C();
现在,假设我执行了一些语句。现在,我有兴趣识别基类指针指向的对象的类型。如何做到这一点?
最佳答案
直接的方法是使用dynamic_cast
:
B* b = dynamic_cast<B*>( a );
if( b != 0 ) {
// the object can be cast to class B safely
}
然而,真正的答案是当你正确地使用多态时你不需要这样做——你必须使用虚函数并在派生类中适本地实现它们,这样你就可以盲目地调用它们并执行正确的代码。
关于c++ - 多态时识别对象的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6489425/