我在初始化指针数组时遇到了麻烦.我发现用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++?它在标准中的位置是这样说的吗?
此值初始化是标准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.,
| 归档时间: |
|
| 查看次数: |
2281 次 |
| 最近记录: |