[C++]static
在C++中,static
变量有不同的用途和作用,取决于它在程序中的声明位置。它可以用于局部变量、类成员变量和全局变量。
1. 局部static
变量
局部static
变量是在函数或代码块中声明的static
变量。它与普通局部变量的主要区别是:
- 生命周期:局部
static
变量的生命周期从第一次执行到该声明开始,直到程序结束。即使函数多次被调用,它的值也会在不同的调用之间保持不变。 - 作用域:它的作用域仅限于函数或代码块,不能被函数外部直接访问。
示例:
1 |
|
2. 类的static
成员变量
类中的static
成员变量是属于整个类的,而不是属于某个对象的。它在所有类的实例间共享,同一个类的所有对象都可以访问这个变量,并且它的值对所有对象都是相同的。
- 生命周期:静态成员变量的生命周期从程序开始,到程序结束。
- 访问方式:可以通过类名或类的对象来访问,但推荐使用类名来访问。
- 初始化:静态成员变量必须在类定义体外进行初始化,不能在类内部直接赋值。
示例:
1 |
|
3. 全局static
变量或函数
如果在函数外部声明static
变量或函数,它的作用域将被限制在定义它的文件中,也就是说,它只能在该文件中访问,不能被其他文件链接或访问。通常,这种用法用于隐藏模块的全局变量,使得它们不会污染其他文件的命名空间。
示例:
1 |
|
4. 类static
成员函数
如果在类中声明一个static
成员函数,那么该函数可以在没有对象实例的情况下被调用。static
成员函数只能访问类的static
成员变量或其他static
成员函数,不能访问非静态成员。
示例:
1 |
|
总结
- 局部
static
变量:初始化一次,生命周期贯穿整个程序,作用域限于函数内。 - 类的
static
成员变量:在类的所有对象之间共享,必须在类外进行初始化。 - 全局
static
变量:作用域限制在定义它的文件中,不会被其他文件访问。 - 类的
static
成员函数:无需创建对象即可调用,只能访问static
成员。
这些特性使得static
关键字在C++中广泛用于控制变量和函数的生命周期、作用域和访问权限。
[C++]static
https://erlsrnby04.github.io/2024/10/04/C-static/