メンバ関数とメンバ変数は別々に保存します
唯一の非静的メンバ変数は、オブジェクトの上に落ちます。
1を次のようにそれぞれの空のメモリ空間は、オブジェクトによって占有しました。各空のオブジェクトを与えるC ++コンパイラは、メモリ空間は、オブジェクトがメモリ位置を占めると区別するために、空で割り当てられます。各空間オブジェクトは、ユニークなスペースを持っている必要があります。
この関数は、すべてのオブジェクトは、関数インスタンスを共有し、空間オブジェクトを取ることはありません。
書式#include <iostreamの> 使用して 名前空間はstdを、 クラス人{ パブリック: int型m_a。 }。 クラスPERSON1 { パブリック: int型m_a。 静的 int型M_B。 }。 ボイド試験(){ 人物P。 PERSON1 P1; COUT << のsizeof(P)<< ENDL。 COUT << のsizeof(P1)<< ENDL。 } int型のmain(){ テスト(); システム(「一時停止」); リターン 0 ; }
この出力時:
1
4
4
説明:オブジェクトはまた、1バイトの空きスペースです。静的メンバ変数は、特定のオブジェクト、同じトークンに属していない、静的メンバ関数は、特定のオブジェクトに属していません。さらに:すべてのオブジェクトがメンバ関数のインスタンスを共有します。