Размер классов в случае виртуального наследования
Может кто-нибудь объяснить, пожалуйста, о размере классов в случае виртуального наследования с участием виртуальных функций.
<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>
Вывод размера классов:
<code> sizeof(A): 8 sizeof(B): 12 sizeof(C): 16 sizeof(D): 32 </code>
Я использую компиляторgcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)