空のクラスのサイズとC ++の構造体とクラスの違いは何ですか?
私の考え:
静的メンバーがない場合は、すべてのメンバーがスタックに割り当てられているため、同じメンバーになるはずです。
それらがすべて空であれば、同じです。
静的メンバーがある場合は、メンバー内の相対的な位置に依存します。
右 ?
ありがとう
class == struct
the only difference is that in a struct, all members i.e. ivars and methods are public by default.
静的メンバー、すなわち変数またはメソッドは、特定のインスタンスに属さないという意味でクラス/構造体の一部ではありません。サイズは含まれません。
union
is not a class nor struct, Union is used to map a struct to a particular memory layout.
サイズを取得するにはインスタンス変数の sizeof()
を実行するだけです。
C ++標準標準では、Emptyクラスのサイズは非ゼロにする必要があります。
通常、ほとんどのシステムでは 1
バイトです。
In Bjarne Stroustrup's words, the size is non-zero "To ensure that the addresses of two different objects will be different."
ほとんどのシステムでは、一意のアドレスを取得するためだけにシンボルテーブルにクラス名のエントリが作成されるため、配置ルールは重要ではないため、サイズは 1
です。
スタンダードファン:
C ++ 03標準セクション9:クラス、パラ2:
クラス型の完全なオブジェクトとメンバサブオブジェクトは、サイズがゼロでないものとする。 94)