Ich habe mich gefragt, wie groß ein Objekt einer leeren Klasse sein könnte . Es könnte sicherlich nicht 0 Bytes sein, da es möglich sein sollte, wie jedes andere Objekt darauf zu verweisen und darauf zu zeigen. Aber wie groß ist ein solches Objekt?
Ich habe dieses kleine Programm benutzt:
#include <iostream>
using namespace std;
class Empty {};
int main()
{
Empty e;
cerr << sizeof(e) << endl;
return 0;
}
Die Ausgabe, die ich sowohl auf Visual C ++ - als auch auf Cygwin-g ++ - Compilern erhielt, war 1 Byte ! Dies war für mich ein wenig überraschend, da ich erwartet hatte, dass es die Größe des Maschinenworts hat (32 Bit oder 4 Bytes).
Kann jemand erklären, warum die Größe von 1 Byte? Warum nicht 4 Bytes? Ist dies auch vom Compiler oder der Maschine abhängig? Kann jemand einen schlüssigeren Grund dafür angeben, warum ein leeres Klassenobjekt nicht die Größe 0 Bytes hat?