在C++中,static变量的生命周期取决于它们的存储位置。静态变量可以分为两种:静态局部变量和静态全局变量。
- 静态局部变量:静态局部变量是在函数内部声明的静态变量。静态局部变量在程序运行时会一直存在,直到程序结束才会被销毁。它们只会被初始化一次,即使函数被调用多次,静态局部变量的值也会保持不变。
void function() { static int count = 0; count++; cout << "Count: " << count << endl; } int main() { function(); // 输出 Count: 1 function(); // 输出 Count: 2 return 0; }
- 静态全局变量:静态全局变量是在全局作用域内声明的静态变量。静态全局变量的生命周期也是整个程序运行期间,但它们的作用域只限于声明它们的文件。这意味着在其他文件中无法访问静态全局变量。
// File1.cpp static int globalVar = 10; // File2.cpp extern int globalVar; int main() { cout << "Global Var: " << globalVar << endl; // 输出 Global Var: 10 return 0; }
总而言之,静态变量的生命周期是整个程序运行期间,它们在程序开始时被初始化,在程序结束时被销毁。静态变量可以在声明它们的作用域内保持其值不变,对于静态全局变量,只能在声明它们的文件中访问。