【发布时间】:2015-04-23 09:18:39
【问题描述】:
1) 类的静态数据成员是否总是在 main() 调用之前被初始化?
2)如果类初始化代码的静态数据成员使用其他翻译单元的全局静态变量,是否会发生“静态初始化顺序惨败”?
我可以在哪里阅读有关它的更多信息?我在 2003 年的 C++ 标准中找不到答案。
非常感谢。
【问题讨论】:
标签: c++ initialization static-members
1) 类的静态数据成员是否总是在 main() 调用之前被初始化?
2)如果类初始化代码的静态数据成员使用其他翻译单元的全局静态变量,是否会发生“静态初始化顺序惨败”?
我可以在哪里阅读有关它的更多信息?我在 2003 年的 C++ 标准中找不到答案。
非常感谢。
【问题讨论】:
标签: c++ initialization static-members
1) 类的静态数据成员是否总是在 main() 调用之前被初始化?
是的,它们总是在程序开始执行之前被初始化。
2)如果类初始化代码的静态数据成员使用其他翻译单元的全局静态变量,是否会发生“静态初始化顺序惨败”?
是的,除此之外,在main() 执行之前初始化的所有其他事情也会发生这种情况。
【讨论】:
两个答案都是。
请参阅 https://isocpp.org/wiki/faq/ctors#static-init-order 以获得详细说明。
【讨论】: