在C++中,静态对象在程序运行期间的不同阶段有不同的初始化时机。静态对象是指在全局作用域中声明的静态变量,或者在类中声明为静态成员变量的对象。

  1. 静态变量(全局静态对象):全局静态对象在程序启动时就会被初始化。它们在程序开始执行前就分配了内存,并且只会初始化一次。全局静态对象的生命周期从程序开始运行到程序结束。

#include <iostream>
using namespace std;

// 全局静态对象
static int globalStaticVar = 10;

int&2024澳门特马开码查询185期nbsp;main() {
    // 在main函数执行之前,全局静态对象已经被初始化
    cout << "Global Static Var: " << globalStaticVar << endl;

    return 0;
}
  1. 静态成员变量:静态成员变量属于类,它们在程序启动时同样会被初始化。与全局静态对象类似,静态成员变量也只会初始化一次,并且它们的生命周期从程序开始运行到程序结束。

#include <iostream>
using namespace std;

class MyClass {
public:
    // 静态成员变量
    static int staticVar;
};

// 静态成员变量的初始化,通常在类外进行
int MyClass::staticVar = 20;

int main() {
    // 在main函数执行之前,静态成员变量已经被初始化
    cout << "Static Var: " << MyClass::staticVar << endl;

    return 0;
}

注意:静态局部变量(在函数内部声明为静态的变量)在函数首次被调用时才会进行初始化,且它们的生命周期从其声明处开始到程序结束。静态局部变量是一种特殊的局部变量,只会初始化一次,并且在函数调用之间保持其值。它们的初始化是在第一次进入包含它们的函数时进行的。


新澳门三期必开一期凤凰网