static void Foo()
{
int bar = 0;
}
默认情况下,bar 是静态的吗?标准对此有何规定?
static
关键字。Foo
更改为:static void Foo()
{
int bar = 0;
bar++;
cout << bar << endl;
}
然后调用:
Foo();
Foo();
由于 bar
不是静态的,输出结果将为:
1
1
但如果您将 bar
声明为 static
,就像这样:
static void Foo()
{
static int bar = 0;
bar++;
cout << bar << endl;
}
你的输出实际上将是:
1
2
endl
。 - Jonathan Mee
static
来隐藏函数是一个值得怀疑的想法。也许,引入一个关键字hidden
会是一个更好的方法。 - Sergey Kalinichenko