Fiquei me perguntando qual poderia ser o tamanho de um objeto de uma classe vazia . Certamente não poderia ter 0 bytes, pois deveria ser possível referenciá-lo e apontar para ele como qualquer outro objeto. Mas, quão grande é esse objeto?
Usei este pequeno programa:
#include <iostream>
using namespace std;
class Empty {};
int main()
{
Empty e;
cerr << sizeof(e) << endl;
return 0;
}
A saída que obtive nos compiladores Visual C ++ e Cygwin-g ++ foi de 1 byte ! Isso me surpreendeu um pouco, já que esperava que fosse do tamanho da palavra da máquina (32 bits ou 4 bytes).
Alguém pode explicar por que o tamanho de 1 byte? Por que não 4 bytes? Isso depende do compilador ou da máquina também? Além disso, alguém pode dar uma razão mais convincente de por que um objeto de classe vazio não terá o tamanho de 0 bytes?