nil
默认情况下 bar 是静态的吗?标准对此有何看法?
答案 0 :(得分:8)
不,在C ++中创建变量static的唯一规定是static
keyword。
例如,如果您将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
答案 1 :(得分:5)
不,默认情况下,静态函数内的变量会在自动存储中分配。
static
函数和static
变量表示在C和C ++语法中重复使用相同关键字的正交概念
static
告诉编译器将其隐藏在其他翻译单元中定义的函数中static
告诉编译器将该变量的数据放在静态存储中。将static
用于函数与静态存储区无关。