通常构造函数应如下所示:
//ctor1
SmallSim::SmallSim()
:mSimInit(false)
,mServersCreated(false)
,mTotalCPUTime(0)
{
...
}
Run Code Online (Sandbox Code Playgroud)
如果我有多个构造函数会发生什么?
它在我看来,如果我从第二个调用第一个构造函数,第一个构件变量就不会被初始化.
//ctor2
SmallSim::SmallSim(bool ImmediateExecution, bool Report)
{
SmallSim();
...
}
Run Code Online (Sandbox Code Playgroud)
那么我需要在每个构造函数上重复:mSimInit(false),mServersCreated(false),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;
}
Run Code Online (Sandbox Code Playgroud)
是否有正确的方法来初始化成员变量而不在每个构造函数上重复init?
c++ ×1