`static` 是 C++ 中的一个关键字,它具有多种用途,以下是 `static` 关键字在 C++ 中的主要用途:
1. **静态局部变量**:在函数内部,使用 `static` 声明的局部变量会在程序的整个生命周期中保持其值。
void func() { static int count = 0; count++; cout << count; }
2. **静态类成员**:在类中,使用 `static` 声明的成员(无论是数据成员还是成员函数)都是类级别的,而不是对象级别的,这意味着它们不属于任何类的实例,而是属于类本身。
class MyClass { public: static int staticVar; // 静态数据成员 static void staticFunc(); // 静态成员函数 };
3. **静态全局变量和函数**:在全局范围内,使用 `static` 声明的变量或函数的作用范围被限制在其定义的源文件中。
static int globalVar = 0; // 只在本源文件可见 static void globalFunc() { // 只在本源文件可见 // ... }
4. **静态指针和引用**:可以声明静态指针或引用,这意味着这些指针或引用在整个程序执行期间都存在。
5. **静态常量**:可以使用 `static` 关键字声明常量,这意味着该常量在整个程序执行期间保持不变。
6. **静态类型转换**:在某些情况下,可以使用 `static_cast` 进行类型转换,这比 `dynamic_cast` 更高效,但只能用于已知类型的转换。
7. **静态函数**:在类中,可以使用 `static` 关键字声明一个函数,该函数不依赖于类的任何特定实例,这样的函数可以直接通过类名调用,而不需要创建类的实例。
8. **静态模板成员**:在模板类中,可以使用 `static` 关键字声明模板成员。
9. **静态嵌套类和静态友元类**:可以在类内部使用 `static` 关键字声明嵌套类或友元类。
10. **静态常量成员**:可以在类中声明一个静态常量成员,该成员在整个程序中只有一个实例。
11. **静态局部类型别名**:可以使用 `static` 关键字为局部变量或函数定义类型别名。
12. **静态模板别名**:可以使用 `static` 关键字为模板定义别名。
13. **静态模板别名**:可以使用 `static` 关键字为模板定义别名。
14. **静态模板别名**:可以使用 `static` 关键字为模板定义别名。