C++指针数组初始化帮助

Rod*_*lor 9 c++

我在初始化指针数组时遇到了麻烦.我发现用gcc c ++(4.6.0)编译的是:

MyClass** a = new MyClass*[100];
Run Code Online (Sandbox Code Playgroud)

并不总是初始化指针数组.(大多数时候它确实给了我一个让我困惑的空指针数组)

MyClass** a = new MyClass*[100]();
Run Code Online (Sandbox Code Playgroud)

DOES将数组中的所有指针初始化为0(空指针).

我写的代码意味着可以在Windows/Linux/Mac/BSD平台上移植.这是gcc c ++编译器的一个特殊功能吗?还是标准的C++?它在标准中的位置是这样说的吗?

Che*_*Alf 5

此值初始化是标准C++.

相关标准是C++ 98和C++03§5.3.4/ 15.在C++ 98中,它是默认初始化,在C++ 03中,后来是值初始化.对于你的指针,它们都减少为零初始化.

C++03§5.3.4/ 15:

- 如果new-initializer属于表单(),则该项是值初始化的(8.5);

在C++ 0x中,该段代替引用"用于直接初始化的8.5的初始化规则",其中在N3290(FDIS)中,您可以在§8.5/ 16中找到相同的措辞.

干杯&hth.,