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