close
在class中 , 我們若想要宣告一個data member為static , 通常分為public 與 private,
若是public , 則代表這個class的所有object都共享這個 data member ,
而且這個data member 可以藉由class的name scope直接從外面存取.
int GenerateID()
{
static int s_nID = 0;
return s_nID++;
}
int main()
{
std::cout << GenerateID() << std::endl;
std::cout << GenerateID() << std::endl;
std::cout << GenerateID() << std::endl;
return 0;
}
若是宣告在private內 , 則代表這個class的所有object都共享這個 data member ,
但是不像public的方式 , 除了這個class的object外 , 沒有方法可以進行存取.
class Something { private: static int s_nIDGenerator; int m_nID; public: Something() { m_nID = s_nIDGenerator++; } int GetID() const { return m_nID; } }; int Something::s_nIDGenerator = 1; int main() { Something cFirst; Something cSecond; Something cThird; using namespace std; cout << cFirst.GetID() << endl; cout << cSecond.GetID() << endl; cout << cThird.GetID() << endl; return 0; }
另外 , 不管是宣告在public 或是在private內 , 我們都可以在這個class的外面對這個static data memeber進行初始化.
ref : http://www.learncpp.com/cpp-tutorial/811-static-member-variables/
全站熱搜