我最近接受了一个 C/C++ 是主要语言的职位的面试,在一个问题中,我被告知可以使用 vtable 来确定基指针实际存储的层次结构中的哪个类。
因此,例如,如果您有
class A
{
public:
A() {}
virtual ~A() {}
virtual void method1() {}
};
class B : public A
{
public:
B() {}
virtual ~B() {}
virtual void method1() {}
};
然后实例化A * pFoo = new B()
,是否确实可以使用 vtable 来确定 pFoo 是否包含指向 A 或 B 实例的指针?