Wielkość klas w przypadku dziedziczenia wirtualnego
Czy ktoś może wyjaśnić wielkość klas w przypadku dziedziczenia wirtualnego z użyciem funkcji wirtualnych.
<code> class A{ char k[ 3 ]; public: virtual void a(){}; }; class B : public A{ char j[ 3 ]; public: virtual void b(){}; }; class C : public virtual A{ char i[ 3 ]; public: virtual void c(){}; }; class D : public B, public C{ char h[ 3 ]; public: virtual void d(){}; }; </code>
Wynik wielkości klas jest następujący:
<code> sizeof(A): 8 sizeof(B): 12 sizeof(C): 16 sizeof(D): 32 </code>
Kompilatorem, którego używam, jestgcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)