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 的資料。
沒有留言:
張貼留言