C ++ - 静的メンバ変数のように

メンバ変数のI.レビュー

1.オブジェクト名でのパブリックメンバ変数にアクセスすることができ
、各オブジェクトのメンバ変数2.ユニークさ
3メンバ変数は、オブジェクト間で共有することはできません
Q:新たな要求
プログラムの実行時にオブジェクトのクラスの1統計数を
2.セキュリティ保証プログラム(グローバル変数を使用することはできません)
現在のオブジェクトの番号3は、容易に入手可能とすることができる
コードサンプル

#include <iostream>
using namespace std;

class Test
{
private:
    int mCount;
public:
    Test() : mCount(0)
    {
        mCount++;
    }
    ~Test()
    {
        --mCount;
    }
    int getCount()
    {
        return mCount;
    }
};

Test gTest;

int main()
{
    Test t1;
    Test t2;

    cout<<"gTest.getCount()="<<gTest.getCount()<<endl;
    cout<<"t1.getCount()="<<t1.getCount()<<endl;
    cout<<"t2.getCount()="<<t2.getCount()<<endl;

    return 0;
}

図操作に示した結果は、
C ++  - 静的メンバ変数のように
結果がMCOUNT各単一のオブジェクト構造で別々に生成定義されているために発生し、出力の数も1カウントされます

II。静的メンバ変数

あなたがC ++の静的メンバ変数を定義することができますA.
全体のすべてのクラスに属し1.静的メンバ変数
のライフサイクル2.静的メンバ変数は、任意のオブジェクトに依存しない
3.パブリック静的メンバ変数は、クラス名から直接アクセスすることができます
すべてのオブジェクトを共有クラス4静的メンバ変数
5パブリック静的メンバ変数は、オブジェクト名を介してアクセスすることができる
の静的メンバ変数B.特性
直接静的キーワードによって修飾定義1.
2.クラス外の静的メンバ変数は、別の配布スペースを必要とする
3静的メンバ変数をプログラムグローバルデータ内に配置
:構文規則タイプクラス名:VARNAME = valueの
コードサンプル

#include <iostream>
using namespace std;

class Test
{
private:
    static int mCount;
public:
    Test() 
    {
        mCount++;
    }
    ~Test()
    {
        --mCount;
    }
    int getCount()
    {
        return mCount;
    }
};

int Test::mCount=0;

Test gTest;

int main()
{
    Test t1;
    Test t2;

    cout<<"gTest.getCount()="<<gTest.getCount()<<endl;
    cout<<"t1.getCount()="<<t1.getCount()<<endl;
    cout<<"t2.getCount()="<<t2.getCount()<<endl;

    return 0;
}

図ランの結果
C ++  - 静的メンバ変数のように
の要約:
1.静的クラスは、静的メンバ変数キーを定義することができる
クラスに属する。2.すべての静的メンバ変数
各オブジェクトは、静的メンバ変数にアクセスすることができる3.
割り当てられたグローバルデータエリアに4静的メンバ変数を宇宙
プログラムの実行のための静的メンバ変数5.寿命

おすすめ

転載: blog.51cto.com/13475106/2406508