static 是 C/C++ 中很常用的修饰符,它被用来控制变量的存储方式,可见性(作用域)和生存期。
🐖关注存储区、作用域、生存期!!
static的三种作用:
- 为了表示退出一个块后仍然存在的局部变量
- 用来表示不能被其它文件访问的全局变量和函数
- 表示属于整个类而不是属于此类的任何特定对象的变量和函数
🙋
几种结合方式:
- 不在类中👉static+ 变量(全局变量&局部变量)/普通函数
- 在类中👉static+ 类内数据成员/类内函数成员
具体来说:
- static修饰全局变量👉静态全局变量:限制全局变量只能被模块内访问,不可以在别的模块中用extern声明调用。
- static修饰函数中的变量(栈变量)👉静态局部变量:改变变量的生存期,作用域不变仍为所在函数。只被初始化一次。
- static修饰函数👉静态函数:作用与修饰全局变量类似,也是限制该函数只能在模块内访问,不能再别的模块中用extern声明调用
- static修饰类中的数据成员👉(类中的)静态数据成员:属于整个类所有,类的所有对象共同维护。
- static修饰类中的函数成员👉(类中的)静态函数成员:也属于整个类,一般用于调用静态数据成员,不能直接访问非static成员(要指定类才行)