2011-04-05 64 views
7

我在以前没有见过的另一个问题中看到类似下面的一些示例。动态数组分配结束时的()是什么意思?

new int[m_size](); 
       ^^ 

我所看到的和所使用的版本new int[m_size]所有的时间,但没有一个与()末。

+1

http://stackoverflow.com/questions/620137上堆单个整数/ do-the-brackets-after-type-name-make-a-difference-with-new – 2011-04-05 12:35:05

回答

12

两个词:Value Initialization

new int[m_size]();阵列元件将通过写()因为()意味着值初始化为零初始化。 (原始类型初始化为零)

1:对象的初始化方法是一组空括号,即(),应进行值初始化。 ($ 7.0/7)

+0

啊!那么它初始值是什么类型?它是整个表达式的指针类型还是数组的单个成员? – dubnde 2011-04-05 12:37:53

+1

@MeThinks:签出'8.5/5'(值初始化)。对于原始类型**值初始化** => **零初始化**。在这种情况下,数组的所有元素将被初始化为'0' – 2011-04-05 12:39:37

+0

好的。在标准中得到它“如果T是一个数组类型,那么每个元素都是值初始化的”。感谢您的及时回应。我第一次遇到与阵列有关的问题。 – dubnde 2011-04-05 12:41:27

2

这意味着所有的元素将是zero initialized,类似于calloc(o,sizeof(int))其中具有此释放calloc,乌尔初始化与0