Zastanawiałem się, jaki może być rozmiar obiektu z pustej klasy . Z pewnością nie może to być 0 bajtów, ponieważ powinno być możliwe odwoływanie się do niego i wskazywanie go jak każdy inny obiekt. Ale jak duży jest taki obiekt?
Użyłem tego małego programu:
#include <iostream>
using namespace std;
class Empty {};
int main()
{
Empty e;
cerr << sizeof(e) << endl;
return 0;
}
Wynik, który otrzymałem na kompilatorach Visual C ++ i Cygwin-g ++, wynosił 1 bajt ! Było to dla mnie trochę zaskakujące, ponieważ spodziewałem się, że będzie miał rozmiar słowa maszynowego (32 bity lub 4 bajty).
Czy ktoś może wyjaśnić, dlaczego rozmiar 1 bajtu? Dlaczego nie 4 bajty? Czy to zależy także od kompilatora czy maszyny? Czy ktoś może podać bardziej przekonujący powód, dla którego pusty obiekt klasy nie będzie miał rozmiaru 0 bajtów?