最近在研究C++的object model,刚好看见几道关于sizeof的题目,做下来发现关于virtual关键字的class size并不是那么容易计算。还有编译器为了优化而产生的data padding也很tricky…… class A { int a; }; // sizeof(A) = 4 class B : A { int b; }; // sizeof(B) = 8 class C : A { int c; }; // sizeof(C) = 8 class D : B, C { }; // sizeof(D) = 16 class A { int a; }; // sizeof(A) = 4 class B : virtual A { int b; }; // sizeof(B) = 12 class C : virtual A { int c; }; // sizeof(C) = 12 class D : B, C { }; // sizeof(D) = 24 class A { int a; }; ...