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

时间:2015-04-23 09:18:40

标签: c++ initialization static-members

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

2)"静态初始化命令惨败"是真的吗?如果类初始化代码的静态数据成员使用其他翻译单元的全局静态变量会发生什么?

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

非常感谢。

2 个答案:

答案 0 :(得分:1)

两个答案都是。

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

答案 1 :(得分:1)

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

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

2)如果类初始化代码的静态数据成员使用其他翻译单元的全局静态变量,是否会发生“静态初始化顺序失败”?

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