Tamaño de las clases en caso de herencia virtual.
Alguien puede explicar el tamaño de las clases en el caso de herencia virtual que involucra funciones virtuales.
<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>
La salida del tamaño de las clases es:
<code> sizeof(A): 8 sizeof(B): 12 sizeof(C): 16 sizeof(D): 32 </code>
El compilador que estoy usando esgcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)