const size_t size = 5;
int *i = new int[size]();
for (int* k = i; k != i + size; ++k)
{
cout << *k << endl;
}
尽管我已经值通过使用()操作者初始化动态数组元素,输出I得到的是C++初始化动态数组元素
135368
0
0
0
0
不知道为什么在第一个数组元素被初始化到135368.
有什么想法?
我认为这是一个编译器错误。有些编译器似乎在初始化时遇到了一些问题:http://www.boost.org/doc/libs/1_40_0/libs/utility/value_init.htm – 2009-10-16 18:01:09
使用'new []'对数组进行值初始化甚至是格式良好?我在标准中找不到任何东西(建议参见§5.3.4)。 – 2009-10-16 18:06:14
'new-type-id'不能是语法上的函数类型。这样,'T [N]()'不是一个函数数组,而是一个数组值初始化的(所以'5.3.4/15'适用)。 – 2009-10-16 18:09:21