2020年8月12日 星期三

static data members & static function

class X {
private:
    static int count;
};
int X::count = 0;

static 的資料屬於所有 class object共享,就好像 class 裡的 member function一樣。又因為在定義 class 時還沒有對資料賦值,因此初始化要寫在 class 的定義外面。

class CNum {
public:
    CNum(int a) { x = a; y += x; }
    static void fun(CNum m) {
        cout << m.x << "vs." << y << endl; }
private:
    int x;
    static int y;
};
int CNum::y = 0;

int main()
{
    CNum O1(4), O2(7);
    CNum::fun(O1);
    CNum::fun(O2);
}
既然所有的object都共享同一份static 變數,要怎麼存取它呢?
可以用static的member function來存取它,如上面code。
在同一個 class 裡的member function其實本來就是共享的,加上static是為了處理 static 的資料。

沒有留言:

張貼留言