有人可以幫助我理解,爲什麼在下面的類中定義的static變量masterID重新初始化,是否創建了具有非默認構造函數的新實例?靜態變量重新初始化
static unsigned int masterID=0;
class game{
public:
unsigned int m_id;
unsigned int m_players;
// default constructor
game():m_id(masterID++){
}
// another constructor using a game instance
game(game g): m_id(masterID++){
...
}
// copy constructor
// copy constructor
game(const game &o)
: m_id(o.m_id), m_players(o.m_players)
{ }
// assignment operator
game& operator =(const game o){
m_id = o.m_id;
m_players = o.m_players;
return *this;
};
與此代碼,只要創建使用默認構造
情況下,例如game g1, g2;
的M_ID呈現值0,1,2,...等等。
但是,如果現在我創建第三個實例作爲
game g3(g2);
爲G3的M_ID再次爲0
我不明白這裏發生了什麼。
的'靜態無符號整型masterID = 0;'線是不** **在'.H '文件,是嗎? – dasblinkenlight 2012-02-15 19:59:22
[Works just fine](http://ideone.com/Mhy6l)如你所示,顯然問題在於你沒有顯示的代碼。 [SSCCE](http://sscce.org) – ildjarn 2012-02-15 20:03:13
你在告訴我們所有的事實嗎?我試過你的代碼,第二個構造函數不重置masterID。但我需要修復myID標識符,所以這不是真正的代碼。 – 2012-02-15 20:11:07