我有一个很小的函数,我想初始化一次,例如
void SomeFunc()
{
static bool DoInit = true;
if (DoInit)
{
CallSomeInitCode();
DoInit = false;
}
// The rest of the function code
}
如果此函数被多次调用,则将留下一个不必要的函数if (DoInit)
这是无法优化的。那么为什么我不在其他地方(例如构造函数)进行初始化呢?因为,从逻辑上讲,这个初始化代码最适合这个函数,并且这样更容易维护,尽管事实上它每次都会进行不必要的检查。
有没有更好的方法来做到这一点而不诉诸使用上面示例中的构造?
您可以通过构建一个在其构造函数中调用初始化代码的类来完成此操作,如下所示:
class InitSomething {
public:
InitSomething() {
CallSomeInitCode();
}
};
现在你可以这样做:
void SomeFunc() {
static InitSomething myInitSomething;
...
}
该对象将被构造一次,执行CallSomeInitCode
正好一次。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)