簡體   English   中英

C ++指針數組初始化幫助

[英]C++ pointer array initialization help

我在初始化指針數組時遇到了麻煩。 我發現用gcc c ++(4.6.0)編譯的是:

MyClass** a = new MyClass*[100];

並不總是初始化指針數組。 (大多數時候它確實給了我一個讓我困惑的空指針數組)

MyClass** a = new MyClass*[100]();

DOES將數組中的所有指針初始化為0(空指針)。

我寫的代碼意味着可以在Windows / Linux / Mac / BSD平台上移植。 這是gcc c ++編譯器的一個特殊功能嗎? 還是標准的C ++? 它在標准中的位置是這樣說的嗎?

此值初始化是標准C ++。

相關標准是C ++ 98和C ++03§5.3.4/ 15。 在C ++ 98中,它是默認初始化,在C ++ 03中,后來是值初始化。 對於你的指針,它們都減少為零初始化。

C ++03§5.3.4/ 15:

is of the form () , the item is value-initialized (8.5); - 如果的格式為() ,則該項為值初始化(8.5);

在C ++ 0x中,該段代替引用“用於直接初始化的8.5的初始化規則”,其中在N3290(FDIS)中,您可以在§8.5/ 16中找到相同的措辭。

干杯&hth。,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM