Мне было интересно, каков может быть размер объекта пустого класса . Конечно, это не может быть 0 байтов, так как на него должна быть возможность ссылаться и указывать на него, как на любой другой объект. Но насколько велик такой объект?
Я использовал эту небольшую программу:
#include <iostream>
using namespace std;
class Empty {};
int main()
{
Empty e;
cerr << sizeof(e) << endl;
return 0;
}
Результат, который я получил на компиляторах Visual C ++ и Cygwin-g ++, составлял 1 байт ! Для меня это было немного удивительно, поскольку я ожидал, что он будет размером с машинное слово (32 бита или 4 байта).
Кто-нибудь может объяснить, почему размер 1 байт? Почему не 4 байта? Это тоже зависит от компилятора или машины? Кроме того, может ли кто-нибудь дать более убедительную причину, почему пустой объект класса не будет иметь размер 0 байтов?