Chuẩn C++ có quy định cách bố trí biên dịch của lớp và cấu trúc không? Làm cách nào để chúng được biên dịch khác nhau đặc biệt nếu chúng trống?Lớp rỗng và cấu trúc rỗng được biên dịch như thế nào?
7
A
Trả lời
13
Nó theo một cách, nó nói rằng nó phải phân bổ không gian cho nó trừ khi trường hợp nhất định khi nó được sử dụng làm lớp cơ sở (được gọi là Tối ưu hóa lớp cơ sở trống). Điều này là để đảm bảo rằng các đối tượng khác nhau có địa chỉ khác nhau.
Chúng được biên soạn giống nhau cho rằng struct
và class
giống nhau, ngoại trừ thông số truy cập mặc định. Trong C++ 11 khái niệm về bố cục tiêu chuẩn lớp/cấu trúc được giới thiệu và đảm bảo bố cục bộ nhớ cho các lớp trống giống nhau.
Absolutelu "không" trên cả hai số đếm cho câu hỏi đầu tiên. Một lớp có một con trỏ "this" ẩn trong câu trả lời cho câu hỏi thứ hai. – paulsm4
@ paulsm4: Câu trả lời của bạn cho câu hỏi thứ hai là sai. không có dofference giữa 'class' và' struct' trong lĩnh vực này. Để wit, một 'struct' có thể có các thành viên' virtual'. –
Các lớp và cấu trúc chính xác giống nhau, sự khác biệt duy nhất là với đặc tả truy cập mặc định (đối với các thành viên và cơ sở). – GManNickG