【发布时间】:2014-09-24 16:32:41
【问题描述】:
如果我理解正确的话,类定义会在 vtable 中强加虚函数的特定顺序,因此已知给定函数与表的开头有一定的偏移量。但是,我不明白这如何与多态性一起使用。
class B1 {
virtual void funcB1();
};
class B2 {
virtual void funcB2() {}
};
class D : public B1, public B2 {
virtual void funcB1() {}
virtual void funcB2() {}
};
void main(...) {
B1 *b1 = new D();
B2 *b2 = new D();
B1 *realB1 = new B1();
B2 *realB2 = new B2();
b1->funcB1();
b2->funcB2();
realB1->funcB1();
realB2->funcB2();
}
生成的代码如何知道如何访问不同偏移量的funcB2?
【问题讨论】:
标签: c++ polymorphism multiple-inheritance virtual-functions vtable