在 C++ 中,对象构造和析构可能涉及执行用户代码。 因此,了解进入 main 前发生的初始化和退出 main 后调用的析构函数很重要的。(有关构造函数和析构函数的详细信息,请参阅构造函数和析构函数。)
进入 main 前将发生以下初始化:
静态数据默认初始化为零。 没有显式初始值设定项的所有静态数据在执行任何其他代码(包括运行时初始化)前设置为零。 静态数据成员仍必须显式定义。
翻译单元中的全局静态对象的初始化。 这可能在进入 main 前或初次使用全局静态对象的翻译单元中的任何函数或对象前发生。
Microsoft 专用
在 Microsoft C++ 中,全局静态对象在进入 main 前进行初始化。
结束 Microsoft 专用
相互依赖但位于不同翻译单元中的全局静态对象会导致错误行为。