19章 静的メンバ変数

http://www.geocities.jp/ky_webid/cpp/language/019.html

クラス単位で存在する変数を定義することができます。

#include <iostream>

class CSample {
public:
    static int m_int;
};
int CSample::m_int = 0;

int main () {
    using namespace std;
    CSample obj1;
    CSample obj2;
    
    obj1.m_int = 100;
    obj2.m_int = 200;
    
    cout << obj1.m_int << endl;
    cout << obj2.m_int << endl;
    cout << CSample::m_int << endl;
    
    return 0;
}
$ main
200
200
200

obj1とobj2とCSampleもどれも同じ値を指しているので、最後に更新した値が表示されるということになります。

結局単なるクラスという名前付きのグローバル変数と同じですね。

クラス内で宣言してるけど、定義はクラスの外でやらないといけないのも結局単なるグローバル変数と考えてOKですよね。