static

static的作用:

不考虑类

第一个作用:隐藏

  当我们同时编译多个文件时,所有未加static前缀的全局变量函数都具有全局可见性。

  如果加了static,就会对其他源文件隐藏,利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。


  • static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏,而对于变量,static还有下面两个作用

第二个作用:默认初始化为0

  包括未初始化的全局静态变量与局部静态变量。其实未初始化的全局变量也具备这一属性,因为未初始化的全局变量与未初始化的静态变量是存储在同一块区域内的(BBS段)。

  在BBS段中,内存中所有的字节默认值都是0x00,某些时候这一特性可以减少程序员的工作量。

第三个作用:保持局部变量内容的持久

  函数内的自动(局部)变量,当调用时就存在,退出函数时就消失,当静态局部变量虽然在函数内定义,当静态局部变量始终存在着,也就是说它的生存周期为整个源程序,其特点就是只进行一次初始化且具有“记忆性”。

  静态局部变量的生存期虽然为整个源程序,但是其作用域仍与局部变量相同,即只能在定义该变量的函数内使用该变量。退出函数后,尽管该变量还继续存在,但是不能使用它。


类中static的作用

  C++重用了static这个关键字,并赋予它与前面不同的含义:表示属于一个类而不是属于此类的任何特定的对象的变量和函数(和Java中此关键字的含义相同)

  • 静态数据成员
  • 静态成员函数