初始化成員變量通常是一個構造函數應該是這樣的:C++與多個構造
//ctor1
SmallSim::SmallSim()
:mSimInit(false)
,mServersCreated(false)
,mTotalCPUTime(0)
{
...
}
,如果我有多個構造會發生什麼?
它在我看來,如果我從我的第二個構造函數調用,第一個成員變量不會被初始化。
//ctor2
SmallSim::SmallSim(bool ImmediateExecution, bool Report)
{
SmallSim();
...
}
所以我需要重複 :mSimInit(假) ,mServersCreated(假) ,mTotalCPUTime(0) 對每一個構造我?
據我所知使用InitClassVars()是不是最好的一段路要走......
//ctor1
SmallSim::SmallSim()
{
InitClassVars();
...
}
//ctor2
SmallSim::SmallSim(bool ImmediateExecution, bool Report)
{
InitClassVars();
...
}
//Common function for init of member vars for multiple constructors
void SmallSim::InitClassVars(void)
{
mSimInit = false;
mServersCreated = false;
mTotalCPUTime = 0;
}
是否有INIT成員用了重複的每一個構造在init瓦爾正確的方法是什麼?
您使用的是C++ 03還是C++ 11? – Electro
我使用gcc -std = C++ 0x編碼,所以我在思考11,因爲智能指針工作。 – DieSlower