C++检查对象是否是给定超类的后代

Cod*_*mit 2 c++

我有一个指向对象的指针,我想知道该对象是给定类的类型还是C++中给定类的子类的类型.

gvd*_*gvd 5

使用dynamic_cast:

class A {
public:
    virtual ~A() = default;
};
class B : public A {    
};
B * obj = new B();
auto obj2 = dynamic_cast<A*>(obj);
if (obj2 != nullptr) {
    std::cout << "B is an A" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)