Мені було цікаво, який може бути розмір об’єкта порожнього класу . Це, безумовно, не може бути 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 байт?