Reputation: 53481
Does the C++ standard dictate the compilation layout of the class and struct? How are they compiled differently especially if they are empty?
Upvotes: 7
Views: 437
Reputation: 81349
It does in a way, it says that it has to allocate space for it unless certain cases when its used as a base class (known as Empty Base Class Optimization). This is to guarantee that different objects have different addresses.
They are compiled the same given that struct
and class
are the same thing, except for the default access specifier. In C++11 the notion of standard-layout classes/structs is introduced, and guarantees that the memory layout for empty classes to be the same.
Upvotes: 13