Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
C ++標準は、クラスと構造体のコンパイルレイアウトを指示しますか?特に空の場合、どのように異なる方法でコンパイルされますか?
ある意味では、基本クラス(Empty Base Class Optimizationとして知られている)として使用される場合を除いて、スペースを割り当てる必要があると言っています。これは、異なるオブジェクトが異なるアドレスを持つことを保証するためです。
それらは、デフォルトのアクセス指定子を除いて、同じようにコンパイルされ、同じものですstruct。C ++ 11ではclass、標準レイアウトのクラス/構造体の概念が導入され、空のクラスのメモリレイアウトが同じになることが保証されます。
struct
class