假设我有一个名为的自由函数InitFoo.我想保护这个功能不被意外多次调用.我没有多想,写了以下内容:
void InitFoo()
{
{
static bool flag = false;
if(flag) return;
flag = true;
}
//Actual code goes here.
}
Run Code Online (Sandbox Code Playgroud)
不过,这看起来像一个大疣.InitFoo也没有需要保留任何其他状态信息.有人可以提出一种方法来实现同一目标而不是丑陋吗?
当然,宏并不算数.
Dan*_*ker 10
你可以用一些不同的丑陋来做到这一点:
struct InitFoo
{
InitFoo()
{
// one-time code goes here
}
};
void Foo()
{
static InitFoo i;
}
Run Code Online (Sandbox Code Playgroud)
你还在使用static,但现在你不需要做自己的标志检查 - static已经放入一个标志并检查它,所以它只构造i一次.
| 归档时间: |
|
| 查看次数: |
1191 次 |
| 最近记录: |