c++ - 多态时识别对象的类型

标签 c++ polymorphism

假设我有一个 class A,它由 BC 扩展。现在,由于缺乏多态性,我使用基类指针指向派生类对象。

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/

相关文章:

c++ - 无法使用 libxml2 和 xpath 获取节点

c++ - 全局检查模拟中的值

c++ - quickfix:如何将 FIX::Account 转换为 c_string 或其他类型

c# - new() 约束对类定义有何作用?

C++ - 使用父类属性

c++ - 每次调用一个函数时如何在循环中迭代一次?

c++ - 格式化输出流,ios::left 和 ios::right

c++ - 使用 `dynamic_cast` 来推断在基类上定义并在派生类上实现的成员函数的参数类型是否正确?

java - 多态二叉搜索树类型不匹配错误

java - Jakson 多态枚举案例