static用来声明静态变量。用法大致可以分为一下几类。
一、静态局部变量
- 该变量在全局数据区分配内存,而局部变量在栈区分配内存
- 静态局部变量在程序执行到该对象的声明处时被首次初始化,以后不再进行初始化,而局部变量没次调用函数都会被初始化。
- 静态局部变量一般在声明处被初始化,如果没有显示初始化,会被程序自动初始化为0,局部变量不会被初始化。
- 静态局部变量始终驻留在全局数据区,直到程序运行结束,但是其作用域为局部作用域,函数体外面不能使用。
二、静态全局变量
- 静态全局变量不能直接被其他文件所用,全局变量可以;
- 其他文件可以定义相同名字的变量,不会发生冲突,因为static隔离了文件
三、静态函数
- 静态函数不能被其他文件所用
- 其他文件可以定义相同的函数,不会发生冲突
四、类静态成员
类的静态成员变量
- 无论类有多少个对象,静态成员只有一个副本。
- 如果不存在初始化语句,那在创建第一个对象的时候,静态成员数据被初始化为0。
- 可以在外部通过范围解析运算符::来重新声明静态变量从而对它进行初始化。
类的静态成员函数
- 目的是把函数与类的对象独立开来,在对象不存在的情况下也可以被调用,类名+::即可。
- 只能访问静态成员数据、静态成员函数和类外部的其他函数。