static void Foo()
{
int bar = 0;
}
Run Code Online (Sandbox Code Playgroud)
条形图是否默认为静态?标准对此有何看法?
不,在C++中创建变量static的唯一规定是static关键字.
例如,如果您更改Foo为:
static void Foo()
{
int bar = 0;
bar++;
cout << bar << endl;
}
Run Code Online (Sandbox Code Playgroud)
然后打电话:
Foo();
Foo();
Run Code Online (Sandbox Code Playgroud)
因为bar是不是静态的输出将是:
1
1
但是,如果您声明bar如下static:
static void Foo()
{
static int bar = 0;
bar++;
cout << bar << endl;
}
Run Code Online (Sandbox Code Playgroud)
你的输出实际上是:
1
2
不,默认情况下,静态函数内的变量在自动存储中分配.
static函数和static变量表示在C和C++语法中重复使用相同关键字的正交概念
static告诉编译器将其隐藏在其他翻译单元中定义的函数中static告诉编译器将该变量的数据放在静态存储中.使用staticfor功能与静态存储区域无关.