четверг, 14 января 2010 г.

Размеры классов

Какой размер имеет пустой класс в c++?
Например, такой:
class A {};
Экспериментальным путем у меня получилось 1 байт (на платформе win32 [GCC 3.4.2 и Visual C++ 2005]).
Если в классе появляется хоть что-то виртуальное...
Так:
class B
{
virtual ~B();
};
Или так:
class C: virtual public A
{
};
То размеры B и С сразу становится равными 4-м байтам.
Есть еще интересный момент.
Такой класс:
class D
{
bool d;
};
Будет иметь размер 1 байт.
А такой:
class E
{
virtual ~E();
bool e;
};
Уже 8.