当一个变量位于 .cpp 文件的全局作用域,而不是在函数中时,将其标记为 static
有何用途?
函数是否也可以使用 static 关键字?如果是,那么它们有什么用途?
当一个变量位于 .cpp 文件的全局作用域,而不是在函数中时,将其标记为 static
有何用途?
函数是否也可以使用 static 关键字?如果是,那么它们有什么用途?
是的,如果你想声明文件作用域变量,那么必须使用static
关键字。在一个翻译单元中声明的static
变量无法从另一个翻译单元中引用。
顺便说一下,在C++03中,static
关键字的使用已经被弃用了。
C++标准(2003)第7.3.1.1/2节内容如下:
在命名空间范围内声明对象时,使用
static
关键字已经不推荐使用;匿名命名空间提供了更好的替代方案。
C++更喜欢使用未命名命名空间而不是static
关键字。参见此主题:
// At global scope
int globalVar; // Equivalent to static int globalVar;
// They share the same scope
// Static variables are guaranteed to be initialized to zero even though
// you don't explicitly initialize them.
// At function/local scope
void foo()
{
static int staticVar ; // staticVar retains it's value during various function
// function calls to foo();
}
只有当程序终止/退出时,它们才会同时停止存在。