C++静态数据成员初始化

C++ static data members initialization

1) classes 的静态数据成员是否总是在调用 main() 之前初始化?

2) 如果 class 初始化代码的静态数据成员使用其他翻译单元的全局静态变量,是否会发生 "static initialization order fiasco"?

我在哪里可以阅读更多相关信息?我在 2003 年的 C++ 标准中找不到答案。

非常感谢。

两个答案都是肯定的。

请参阅 https://isocpp.org/wiki/faq/ctors#static-init-order 以获得对其的详细描述。

1) classes 的静态数据成员是否总是在调用 main() 之前初始化?

是的,它们总是会在程序开始执行之前被初始化。

2) 如果 class 初始化代码的静态数据成员使用其他翻译单元的全局静态变量,是否会发生 "static initialization order fiasco"?

是的,除此之外,在 main() 执行之前初始化的所有其他事物也会发生这种情况。