C++中的静态变量(static variable)具有静态存储期,这意味着它们在程序的整个运行期间都存在。具体来说,静态变量的生命周期分为以下几个阶段:
初始化阶段:当程序开始执行时,静态变量会首先被初始化。对于全局静态变量和局部静态变量,它们的初始化发生在程序的主函数(main)开始之前。对于类静态成员变量,它们的初始化发生在类对象被创建之前。
运行阶段:在初始化完成后,静态变量会一直存在于内存中,直到程序结束。在程序的运行过程中,静态变量会被多次使用,它们的值会根据程序的执行情况进行修改。
销毁阶段:当程序结束时,静态变量会被销毁,释放它们所占用的内存空间。
需要注意的是,静态变量的生命周期与它们的作用域有关。全局静态变量的作用域是整个程序,而局部静态变量的作用域仅限于定义它的函数或代码块。类静态成员变量的作用域仅限于定义它的类。
下面是一个简单的示例,展示了静态变量的生命周期:
#include <iostream>
using namespace std;
void func() {
static int count = 0; // 局部静态变量
count++;
cout << "This function has been called " << count << " times." << endl;
}
int main() {
func();
func();
func();
return 0;
}
输出结果:
This function has been called 1 times.
This function has been called 2 times.
This function has been called 3 times.
在这个示例中,局部静态变量count
在func
函数被调用时初始化,并在程序运行期间一直存在。每次调用func
函数时,count
的值都会递增。当程序结束时,count
被销毁。