static 的常见用法
1. 局部静态变量
在函数内部定义,生命周期是整个程序运行期间,但作用域仍然在函数内。
voidfunc(){staticintcount=0;++count;}特点:
- 只初始化一次
- 多次调用函数时保留上次的值
2. 类的静态成员变量
属于类本身,不属于某个具体对象,所有对象共享一份。
classA{public:staticintcnt;};3. 类的静态成员函数
也属于类本身,可以直接通过类名调用。
classA{public:staticvoidshow(){}};特点:
- 没有
this指针 - 只能访问静态成员,不能直接访问非静态成员
4. 文件作用域的 static
在全局变量或全局函数前加static,表示其链接属性仅限当前源文件,避免被其他文件访问。
staticintg_val=10;staticvoidfunc(){}总结:
static所在位置 | 作用 |
|---|---|
| 函数内 | 延长局部变量的生命周期 |
| 类中 | 表示类共享成员,不依赖对象 |
| 文件作用域内 | 限制符号只在当前文件可见 |