Visual Studio 2010是否执行零初始化?

时间:2018-03-09 08:15:16

标签: c++ visual-studio-2010 c++11

C ++ 11允许使用表达式T();http://en.cppreference.com/w/cpp/language/zero_initialization)将值初始化为零。 Visual Studio 2010是否支持此功能?我运行了一些比较T x;T x = T();的实验,我得出结论,后一种情况确实将值初始化为零,但我不确定我是否可以依赖它。

VS2010文档中的任何地方都提到零初始化? VS2010 Initializers 页面(https://msdn.microsoft.com/en-us/library/w7wd1177(v=vs.100).aspx)没有提及它,不像以后版本的页面,例如VS2013(https://msdn.microsoft.com/en-us/library/w7wd1177(v=vs.120).aspx)。

1 个答案:

答案 0 :(得分:1)

这是从一开始就存在的语言的基本行为。它没有在C ++ 11中引入(在该cppreference页面上注意到“因为C ++ 11”仅与使用(2)中的第三个示例对齐;授予它不是很清楚)。

如果TintT()未导致临时int值为零(并且这是零初始化,则通过 value-initialisation ),编译器会有一个非常严重的错误。我确信Visual Studio没有这个bug。

至于证据,VS2010文档似乎没有在标准提到的相同位置提及此行为(即在explicit type conversion表达式部分下)。当然,随着时间的推移,他们的文档可能会发生变化/演变/变得更加彻底,尤其是当C ++本身添加了越来越多的初始化方法时。

相关问题