在VC ++ 2008中,静态局部变量和静态局部对象的初始化存在严重差异。静态局部变量在main()之前初始化,并且跳过函数中的定义语句。静态本地对象在main()之前由0值初始化,并且函数中的定义语句只执行一次。启动构造函数并通过适当的值初始化对象。所有这些都可以在调试模式下看到。此解决方案是否符合现有的C ++标准?
答案 0 :(得分:1)
来自http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf:
静态存储的每个对象 持续时间应为零初始化 程序启动之前的任何其他 初始化发生。 [注意:在 某些情况下,额外初始化 稍后完成。 - 后注]