在 C++ 中,在运行时没有类表示,但我总是可以在派生类中调用重写的虚拟方法。那个被覆盖的方法保存在 vtable 的哪里?这是一段代码来演示:
struct B1 {
virtual void f() { ... }
};
struct B2 {
virtual void f() { ... }
virtual void g() { ... }
};
struct D : B1, B2 {
void f() { ... }
virtual void h() { ... }
};
D 类对象的内存布局是什么?B1::f 和 B2::f 在该内存布局中保存在哪里(如果它们被保存的话)?