Về cơ bản nó là một theo dõi của this question ..Tại sao các lớp cơ sở có thể có kích thước bằng 0?
Khi tôi nhìn vào tài liệu Chuẩn Tôi thấy điều này ..
Trong Lớp 9,3,
đối tượng Toàn và thành viên subobjects của loại lớp phải có kích thước không phải là. 96) ...
Yeah, đúng .. Nhưng,
96) subobjects lớp cơ sở là không quá hạn chế.
Vì vậy, khi tôi nhìn vào Stroustrup's FAQ, có một ví dụ như
void f(X* p)
{
void* p1 = p;
void* p2 = &p->a;
if (p1 == p2) cout << "nice: good optimizer";
}
Câu hỏi của tôi là tôi không thể hiểu nó như thế nào là tối ưu và cũng lý do tại sao các lớp cơ sở được phép có kích thước bằng không?
Tôi nghĩ điều này có nghĩa là lớp cơ sở trống * đóng góp * không có kích thước bổ sung cho lớp dẫn xuất. Nếu bạn khởi tạo một lớp cơ sở trống, nó sẽ vẫn có kích thước tối thiểu là 1. –
@Paul R: bạn không thể thực sự khởi tạo một lớp _base_ lớp cơ sở trống theo định nghĩa là các phần không thể tách rời của một kiểu khác. Xem thêm định nghĩa rõ ràng hơn của Armen Tsirunyan. – MSalters
Tôi tự hỏi kích thước này bằng 0 và tất cả những thứ như thế cần thiết. –