1、虚继承中对象占用的内存空间1 #include <iostream> using namespace std;class AA {void show() {}int max(int a, int b) { return a > b ? a : b; } }; //函数并不占用内存空间class A {}; //占位符class B {int c; }; //含有一个int型数据成员class C :virtual public A {}; //C类的对象中会有一个指向虚基类A的指针int main() {cout << sizeof(AA) << endl; //1cout << sizeof(A) << endl; //1cout << sizeof(B) << endl; //4cout << sizeof(C) << endl; //4return 0; } 2、虚继承中对象占用的内存空间1 #include <iostream> using namespace std;class Base { virtual void show(){} }; //含有一个指向虚函表的指针class Derived1 : public Base //继承了Base中的虚函数,含有一个指向虚函数表的指针 {};class Dervied2 : public Base //两个虚函数,共同关联一个虚函数表,也即含有一个指向虚函数表的指针 { virtual void show2() {} };class Dervied3 : public virtual Base //视编译器而定 { virtual void show3() {} }; //对于VC来说:虚继承中父类和子类不共享指向虚函数表的指针,因此Derived3类 //的对象中有3个指针: //(1) 指向Base类虚函数表的指针 //(2) 指向Derived3类虚函数表的指针 //(3) 指向虚基类Base的指针int main() {cout << sizeof(Base) << endl; //4cout << sizeof(Derived1) << endl; //4cout << sizeof(Dervied2) << endl; //4cout << sizeof(Dervied3) << endl; //12return 0; }