Размер классов в случае виртуального наследования

Может кто-нибудь объяснить, пожалуйста, о размере классов в случае виртуального наследования с участием виртуальных функций.

<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)

Ответы на вопрос(4)

Ваш ответ на вопрос