2011-04-05 41 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