gpt4 book ai didi

c++ - 只初始化部分函数一次

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:50:36 25 4
gpt4 key购买 nike

我有一个小功能,我想初始化一次,例如

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

关于c++ - 只初始化部分函数一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16511815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com