ฉันสงสัยว่าอะไรจะมีขนาดเท่าออบเจ็กต์ของคลาสว่างได้ มันไม่สามารถแน่นอนสามารถเป็น 0 ไบต์ได้เนื่องจากมันควรจะเป็นไปได้ที่จะอ้างอิงและชี้ไปที่มันเหมือนกับวัตถุอื่น ๆ แต่วัตถุดังกล่าวใหญ่แค่ไหน?
ฉันใช้โปรแกรมขนาดเล็กนี้:
#include <iostream>
using namespace std;
class Empty {};
int main()
{
Empty e;
cerr << sizeof(e) << endl;
return 0;
}
ผลลัพธ์ที่ฉันได้รับจากคอมไพเลอร์ Visual C ++ และ Cygwin-g ++ คือ1 ไบต์ ! นี่เป็นเรื่องที่น่าแปลกใจเล็กน้อยสำหรับฉันเนื่องจากฉันคาดหวังว่ามันจะมีขนาดเท่ากับคำว่าเครื่อง (32 บิตหรือ 4 ไบต์)
ใครช่วยอธิบายได้ไหมว่าทำไมขนาด 1 ไบต์? ทำไมไม่ 4 ไบต์? ขึ้นอยู่กับคอมไพเลอร์หรือเครื่องด้วยหรือเปล่า? นอกจากนี้ใครบางคนสามารถให้เหตุผลที่เป็นประโยชน์มากขึ้นว่าทำไมวัตถุคลาสว่างจึงไม่มีขนาด 0 ไบต์