如何理解父类的级别

时间:2016-03-08 13:56:16

标签: c++ inheritance polymorphism

想象一下,我有这样的课程:

class Base
{
};

class D2: public Base
{
}

class D3: public D2
{
};

class D4: public D3
{
};

继续......

我有一个 Base 类的指针列表。

假设我不知道这些类的继承顺序。我只能理解指针是否是给定类的实例。 (我无法手动检查,因为人们将在以后注册这些课程)

示例:

D3* d3 = new D3();
D2::isInstance(d3); //return true
D4::isInstance(d3); //return false

当我弹出 Base 类的指针时,我想将它转换为大多数派生类。

主要问题: 有没有一个C ++方法,我可以理解D3是否继承自D2?如果有这样的方法我可以解决。

感谢。

1 个答案:

答案 0 :(得分:3)

由于您没有检查特定对象,您可以使用std::is_base_of,这是编译时间,因此是安全的。 link to reference