Visual Studio 2010 是否执行零初始化

Does Visual Studio 2010 perform zero-initialization?

本文关键字:初始化 执行 是否 Studio 2010 Visual      更新时间:2023-10-16

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

VS2010文档中是否提到了零初始化?VS2010 初始值设定项页面(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(。

这是从一开始就存在的语言的基本行为。它没有在C++11中引入(在该cpp首选项页面上请注意,"自C++11"仅与用法(2(下的第三个示例对齐;当然不是很清楚(。

如果T int并且T()不会导致值零的临时int(这是通过值初始化进行零初始化(,编译器将有一个非常严重的错误。我确信Visual Studio没有这个错误。

至于证明,VS2010文档似乎没有在标准提到它的地方(即在显式类型转换表达式部分(提到这种行为。当然,随着时间的推移,他们的文档可能会发生变化/演变/变得更加彻底,特别是随着C++本身添加了越来越多的初始化方法。