Boş bir sınıftaki nesnenin boyutunun ne olabileceğini merak ediyordum . Elbette 0 bayt olamaz, çünkü başka herhangi bir nesne gibi ona başvurmak ve işaret etmek mümkün olmalıdır. Ama böyle bir nesne ne kadar büyük?
Bu küçük programı kullandım:
#include <iostream>
using namespace std;
class Empty {};
int main()
{
Empty e;
cerr << sizeof(e) << endl;
return 0;
}
Hem Visual C ++ hem de Cygwin-g ++ derleyicilerinde aldığım çıktı 1 bayttı ! Makine kelimesinin boyutunda (32 bit veya 4 bayt) olmasını beklediğim için bu benim için biraz şaşırtıcıydı.
1 bayt büyüklüğünün neden olduğunu kimse açıklayabilir mi? Neden 4 bayt değil ? Bu derleyiciye mi yoksa makineye mi bağlı? Ayrıca, boş bir sınıf nesnesinin neden 0 bayt boyutunda olmayacağına dair daha ikna edici bir neden var mı?