Tôi đã tự hỏi những gì có thể là kích thước của một đối tượng của một lớp trống . Nó chắc chắn không thể là 0 byte vì nó có thể tham chiếu và trỏ đến nó giống như bất kỳ đối tượng nào khác. Nhưng, một đối tượng như vậy lớn đến mức nào?
Tôi đã sử dụng chương trình nhỏ này:
#include <iostream>
using namespace std;
class Empty {};
int main()
{
Empty e;
cerr << sizeof(e) << endl;
return 0;
}
Đầu ra tôi nhận được trên cả hai trình biên dịch Visual C ++ và Cygwin-g ++ đều là 1 byte ! Điều này khiến tôi hơi ngạc nhiên vì tôi đã mong đợi nó có kích thước bằng từ máy (32 bit hoặc 4 byte).
Bất cứ ai có thể giải thích tại sao kích thước của 1 byte? Tại sao không phải là 4 byte? Điều này phụ thuộc vào trình biên dịch hay máy tính? Ngoài ra, ai đó có thể đưa ra một lý do cụ thể hơn cho lý do tại sao một đối tượng lớp trống sẽ không có kích thước 0 byte?