什么是静态变量?

lhj*_*362 10 c++ static static-members

什么是静态变量?static int和int之间有什么区别?

小智 34

static关键字有四个单独的用途,其中只有两个密切相关:

  • 全局和命名空间范围内的静态(应用于变量和函数)意味着内部链接
    • 这被未命名命名空间取代,与其余命名空间无关
    • 特别是,其他人倾向于暗示某种独特性,但内部联系意味着相反:你可以拥有许多具有相同名称的对象,只要每个对象都有内部联系,每个翻译单元只有一个
  • 静态数据成员在类的所有实例之间"共享"
    • 它更像是独立于任何类实例
    • 这有时与静态方法组合在一起
  • 静态方法不会在当前实例上"操作"
    • 没有这个指针; 没有实例就可以打电话
  • 静态局部变量(在函数中)在每个函数调用的范围内持久存在

静态数据成员和静态局部变量都可以成为隐藏的全局状态,应该谨慎使用.

现在哪两个密切相关?这不是两个阶级成员 - 关于全球国家的警告会让它消失.您可以将静态数据成员视为静态局部变量,其中所属的函数是类的所有方法,而不是单个函数.

我发现了许多相关的问题,但令人惊讶的是,没有重复的问题.