unj2
unj2

Reputation: 53481

How is an empty class and an empty struct compiled?

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

Answers (1)

K-ballo
K-ballo

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

Related Questions