【发布时间】:2010-07-05 21:44:01
【问题描述】:
在VC++2008中,静态局部变量和静态局部对象的初始化有很大的不同。静态局部变量在 main() 之前初始化,并跳过其在函数中的定义语句。静态局部对象在 main() 之前由 0 值初始化,并且它在函数中的定义语句只执行一次。构造函数启动,对象由适当的值初始化。在调试模式下可以看到所有这些。此方案是否符合现有的 C++ 标准?
【问题讨论】:
-
请发布关注的确切代码。
标签: c++
在VC++2008中,静态局部变量和静态局部对象的初始化有很大的不同。静态局部变量在 main() 之前初始化,并跳过其在函数中的定义语句。静态局部对象在 main() 之前由 0 值初始化,并且它在函数中的定义语句只执行一次。构造函数启动,对象由适当的值初始化。在调试模式下可以看到所有这些。此方案是否符合现有的 C++ 标准?
【问题讨论】:
标签: c++
来自http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf:
静态存储的每个对象 持续时间应在零初始化 在任何其他程序启动之前 初始化发生。 [注:在 某些情况下,额外的初始化 稍后完成。 ——尾注]
【讨论】: