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()
执行之前初始化的所有其他事物也会发生这种情况。
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()
执行之前初始化的所有其他事物也会发生这种情况。