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