Zuerst, erkennen, dass Funktionen, die nicht virtuell sind, keinen Einfluss auf die Größe einer Klasse haben.
Die Größe einer Instanz der beliebigen Klasse ist mindestens 1 Byte, auch wenn die Klasse leer ist, so dass verschiedene Objekte unterschiedliche Adressen haben.
Durch das Hinzufügen einer char
wird sichergestellt, dass verschiedene Objekte unterschiedliche Adressen haben, sodass der Compiler nicht künstlich zu der Größe hinzufügt. Die Größe ist dann sizeof(char)
= 1.
Dann fügen Sie eine int
, die (wahrscheinlich) fügt 4 Bytes auf Ihrer Plattform. Der Compiler beschließt dann, die Klasse aufzufüllen, so dass sie aus Leistungs-/CPU-Anforderungsgründen ausgerichtet wird, und fügt 3 leere Bytes hinzu, so dass die Größe jetzt 1 + 3 + 4 = 8 ist. Wahrscheinlich fügt sie das Padding vor dem int
-Member hinzu dass es auf einer 4-Byte-Grenze ausgerichtet wird, aber es ist nicht erforderlich, es sei denn, Ihre CPU benötigt es.
Sie können über Padding auf the Wikipedia page lesen.
Bitte einen entsprechenden Code schreiben. –