Je me demandais quelle pouvait être la taille d'un objet d'une classe vide . Il ne peut certainement pas être de 0 octet car il devrait être possible de le référencer et de le pointer comme n'importe quel autre objet. Mais quelle est la taille d'un tel objet?
J'ai utilisé ce petit programme:
#include <iostream>
using namespace std;
class Empty {};
int main()
{
Empty e;
cerr << sizeof(e) << endl;
return 0;
}
La sortie que j'ai obtenue sur les compilateurs Visual C ++ et Cygwin-g ++ était de 1 octet ! C'était un peu surprenant pour moi car je m'attendais à ce qu'il soit de la taille du mot machine (32 bits ou 4 octets).
Quelqu'un peut-il expliquer pourquoi la taille de 1 octet? Pourquoi pas 4 octets? Cela dépend-il aussi du compilateur ou de la machine? En outre, quelqu'un peut-il donner une raison plus convaincante pour laquelle un objet de classe vide ne sera pas de taille 0 octet?