static

static#

在 C++ 中,关键字 static 具有多个用途,其中之一就是定义变量的作用域。

1、局部静态变量(Local Static Variables): 在函数内部使用 static 关键字声明的变量被称为局部静态变量。这些变量只在函数首次调用时初始化,而不是每次函数被调用时都重新初始化。它们在整个程序运行期间保持其值,并且具有函数作用域,即只能在声明它们的函数内部访问。

#include <iostream>

void exampleFunction()
{
    static int staticVariable = 0;
    staticVariable++;
    std::cout << "Static Variable: " << staticVariable << std::endl;
}

int main()
{
    exampleFunction();
    exampleFunction();
    return 0;
}

2、全局静态变量(Global Static Variables): 在全局范围内使用 static 关键字声明的变量具有文件作用域,只能在当前源文件中访问。它们对其他源文件是不可见的。

// File1.cpp
static int globalStaticVariable = 42;
// File2.cpp
#include <iostream>

extern int globalStaticVariable; // 声明在其他源文件中定义的全局静态变量

int main()
{
    std::cout << "Global Static Variable: " << globalStaticVariable << std::endl;
    return 0;
}

3、在类中使用 static 可以创建静态成员变量和静态成员函数。静态成员变量是类的所有实例共享的,而静态成员函数不属于任何实例,可以直接通过类名调用。

class Example
{
public:
    static int staticVariable;    // 静态成员变量
    static void staticFunction(); // 静态成员函数
};

// 静态成员变量的定义
int Example::staticVariable = 0;

// 静态成员函数的实现
void Example::staticFunction()
{
    // 实现代码
}