C 中静态类成员初始化的时序 确定 C 中静态类成员何时初始化可能是一件复杂的事情。但是,有一些假设可以指导开发人员理解此类初始化的时间。 C 标准 (3.6.2) 提供了有关静态初始化的两个关键保证: 有序初始化: 在同一翻译单元(通常是 .cpp 文件)中定义的具有静态存储持续时间的对象按照它们的顺序进行初始化定义,而不是它们的声明。 使用前初始化:翻译单元中对象的静态初始化保证在使用该单元中的任何对象或函数之前完成。 虽然这些保证建立了一个总体框架,但值得注意的是即: 单元内排序:单个翻译单元中定义的对象初始化的确切顺序取决于实现。 Inter -unit Ordering: 不同翻译单元中定义的对象的初始化顺序不是由标准。 但是,根据经验,如果没有静态初始化器依赖其他静态初始化器,那么访问静态成员不应引起任何有关初始化顺序的问题。