阅读量:113
C++中的static变量具有以下作用域:
- 如果static变量定义在函数内部,那么它的作用域仅限于该函数。这意味着在其他函数中无法访问此静态变量。每次调用该函数时,静态变量都会保留其上一次调用结束时的值。
void func() {
static int count = 0;
count++;
cout << "This function has been called " << count class="hljs-string">" times." << endl>
- 如果static变量定义在全局作用域中,那么它的作用域是整个程序。这意味着在整个程序中都可以访问此静态变量。静态全局变量在程序启动时初始化,并在程序结束时销毁。
int global_count = 0;
void func() {
static int count = 0;
count++;
cout << "This function has been called " << count class="hljs-string">" times." << endl>
- 如果static变量定义在类中,那么它的作用域仅限于该类的成员函数。这意味着只有该类的成员函数可以访问此静态变量。静态成员变量在类首次被实例化时初始化,并在程序结束时销毁。
class MyClass {
public:
static int count;
};
int MyClass::count = 0;
void func() {
MyClass obj;
MyClass::count++;
cout << "MyClass has been instantiated " << MyClass class="hljs-string">" times." << endl>
总之,C++中的static变量作用域取决于它的定义位置。在函数内部定义的静态变量仅在该函数中可见,而在全局作用域或类中定义的静态变量在整个程序中可见。