static关键字

admin 36 0

`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` 关键字为模板定义别名。