有没有办法告诉指针在C++中实际指向的类型

Dav*_*vid 2 c++ polymorphism inheritance pointers generic-programming

在C++中,您可以将指针声明为一种类型,然后将其指向另一种继承类型.有什么方法可以告诉你当前指的是哪个?

#include <typeinfo>
using namespace std;

class Foo
{
};

class Bar : public Foo
{
};

int main()
{
    Bar bar;
    Foo* foo = &bar;
    bool I_WANT_THIS_TO_BE_TRUE = (typeid(*foo) == typeid(Bar));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Pup*_*ppy 7

这失败是因为您没有声明任何虚函数Foo.例如,改变它有一个虚拟析构函数,你将获得所希望的结果.