温馨提示×

c++ static变量作用域是啥

c++
小樊
81
2024-11-25 19:28:54
栏目: 编程语言

C++中的static变量具有以下作用域:

  1. 如果static变量定义在函数内部,那么它的作用域仅限于该函数。这意味着在其他函数中无法访问此静态变量。每次调用该函数时,静态变量都会保留其上一次调用结束时的值。
void func() {
    static int count = 0;
    count++;
    cout << "This function has been called " << count << " times." << endl;
}
  1. 如果static变量定义在全局作用域中,那么它的作用域是整个程序。这意味着在整个程序中都可以访问此静态变量。静态全局变量在程序启动时初始化,并在程序结束时销毁。
int global_count = 0;

void func() {
    static int count = 0;
    count++;
    cout << "This function has been called " << count << " times." << endl;
}
  1. 如果static变量定义在类中,那么它的作用域仅限于该类的成员函数。这意味着只有该类的成员函数可以访问此静态变量。静态成员变量在类首次被实例化时初始化,并在程序结束时销毁。
class MyClass {
public:
    static int count;
};

int MyClass::count = 0;

void func() {
    MyClass obj;
    MyClass::count++;
    cout << "MyClass has been instantiated " << MyClass::count << " times." << endl;
}

总之,C++中的static变量作用域取决于它的定义位置。在函数内部定义的静态变量仅在该函数中可见,而在全局作用域或类中定义的静态变量在整个程序中可见。

0