Nad*_*LEM 5 c++ compiler-construction standards g++
int * array = new int [size]();
Run Code Online (Sandbox Code Playgroud)
operator()允许将数组的所有值设置为0(所有位都为0).它被称为值初始化.
由于哪个版本的g ++有效?
那么其他编译器呢?
我在哪里可以找到它的标准?
这是C++标准的一部分; 如果它在g ++中无效,那么g ++是不合格的.根据C++标准(ISO/IEC 14882:2003),有几个部分是相关的:
关于新表达的5.3.4/15说:
如果new-initializer的格式为(),则该项将进行值初始化
8.5/5关于初始化者说:
对值类型T的对象进行值初始化意味着:
- 如果T是具有用户声明的构造函数(12.1)的类类型(第9节),则调用T的默认构造函数(如果T没有可访问的默认构造函数,则初始化是错误的);
- 如果T是没有用户声明的构造函数的非联合类类型,则T的每个非静态数据成员和基类组件都是值初始化的;
- 如果T是数组类型,则每个元素都是值初始化的;
- 否则,对象被零初始化
因此,对于一组标量类型的整数,第三和第四个要点适用.
这是来自 2009 年 11 月 9 日的“工作草案,编程标准\nC++ 语言”:
\n\n 8.5 初始化器
\n...
\n7 对 T 类型的对象进行值初始化意味着:
...\n
\n