C++ 靜態變量的初始化時機是在程序啟動時,也就是在 main()
函數執行之前。當一個程序啟動時,靜態變量的初始化會按照它們在代碼中出現的順序依次進行。值得注意的是,靜態局部變量(static local variable)在第一次進入其定義所在的函數時初始化,但僅初始化一次。
以下是一個關于靜態變量初始化的示例:
#include <iostream>
void foo() {
static int x = 10; // 靜態局部變量
std::cout << "x = "<< x << std::endl;
}
int main() {
foo(); // 輸出 x = 10
foo(); // 輸出 x = 10,不再重新初始化
return 0;
}
在這個例子中,x
是一個靜態局部變量,它在 foo()
函數內定義。當第一次調用 foo()
時,x
會被初始化為 10。當再次調用 foo()
時,x
的值保持不變,因為它已經被初始化了。