#include <iostream> using namespace std; class Base1 { public: Base1():a(99){} virtual void f() { cout << "Base1::f " << endl; } private: int a; }; class Base2 { public: Base2():b(88){} virtual void t() { cout << "Base2::t " << endl; } private: int b; }; class Derive : public Base1, public Base2 { private: virtual void f() { cout << "Derive::f " << endl; } virtual void t() { cout << "Derive::t " << endl; } virtual void g() { cout << "Derive::g " << endl; } }; typedef void(*Fun)(); void main() { Derive d; Fun pfun1 = (Fun)*((int*)*((int*)(&d) + 0) + 0); pfun1(); Fun pfun2 = (Fun)*((int*)*((int*)(&d) + 0) + 1); pfun2(); Fun pfun3 = (Fun)*((int*)*((int*)(&d) + 2) + 0); pfun3(); int n1 = *((int*)(&d) + 1); cout << n1 << endl; int n2 = *((int*)(&d) + 3); cout << n2 << endl; } vc6.0编译器 输出: Derive::fDerive::gDerive::t9988 说明class Derive 的对象在内存中,依次存储的是虚函数表Base1, 数据成员a, 虚函数表Base2 .数据成员b.