#include<iostream>
using namespace std;
class A{
char k[3];//2.由于内存对齐,故它的长度也是4
public:
virtual void aa(){}//1.它有一个虚指针,长度是4
};
//由于是虚继承要加上A的长度:8+8=16
class B:virtual public A{
char j[3];
public:
virtual void bb(){}
};
//非虚继承,只需加上普通指针的长度:8+4
class C:public A{
char k[3];
public:
virtual void cc(){}
};
//由于是虚继承加上B的长度:16+8=24
class D:virtual public B{
char h[3];
public:
virtual void dd(){}
};
int main()
{
cout << sizeof(A) << endl;
cout << sizeof(B) << endl;
cout << sizeof(C) << endl;
cout << sizeof(D) << endl;
}
8
16
12
24