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
被銷毀。