static

  1. 修饰普通变量 会改变变量的存储区域和生命周期, 使得该变量存储在静态区,但作用域并没有改变,局部变量还是只能在局部被访问。
  2. 修饰普通函数 表明函数的作用范围,使得仅在定义了该函数的文件中可以使用,从而避免了同一命名空间下的函数重名的问题。
  3. 修饰类的成员变量,使得该类的所有对象仅保留一份变量,并且可以通过类名直接访问
  4. 修饰成员函数,作用同类的成员变量一样。不过在static 内部是访问不到类对象的成员,可以想象的是,编译器对于非static 的成员方法做了手脚,扩充了一个this指针,而且这个过程是可以通过对虚函数表做手脚来测验出来的