【发布时间】:2009-03-06 19:02:26
【问题描述】:
我听说不同语言对关键字 static 的含义存在差异,但我没有找到一个很好的列表来整合这些差异。
以下是我对C++中static的含义的了解:
- 对于函数内的局部静态变量,变量在启动时初始化,值在函数调用之间保存。
- 静态数据成员在类的所有实例之间共享。换句话说,静态数据成员只有一个实例。静态数据成员必须在文件范围内初始化。
- 静态成员函数只能访问静态成员。
- 在递归代码中,静态对象或变量保证在代码块的不同实例中具有相同的状态。
- 在文件范围内定义的静态对象和变量只有内部链接。其他文件不得使用它们。
static在其他语言中的含义有何变化?
【问题讨论】:
-
C++ 中的静态局部变量在第一次调用时被初始化,而不是在启动时。
-
@Iraimbilanja,你能给我一个参考吗? MSDN 似乎另有建议。
-
@Iraimbilanja:C&V 6.7(具体内容请参见我的帖子)。
-
scottie: 好吧... struct A { A() { cout
-
当然,这只是意味着输出是按顺序执行的。这并不能证明结构在启动时没有被初始化。老实说,我对任何一个答案都没有投资,我只是想知道正确的答案。
标签: programming-languages static keyword