のC ++オブジェクト・モデル

メンバ関数とメンバ変数は別々に保存します

唯一の非静的メンバ変数は、オブジェクトの上に落ちます。

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バイトの空きスペースです。静的メンバ変数は、特定のオブジェクト、同じトークンに属していない、静的メンバ関数は、特定のオブジェクトに属していません。さらに:すべてのオブジェクトがメンバ関数のインスタンスを共有します。

おすすめ

転載: www.cnblogs.com/xiximayou/p/12095760.html