Vin*_*rta 1 c++ arrays standards
class Foo {};
int main()
{
Foo *foo[500] = { NULL};
}
Run Code Online (Sandbox Code Playgroud)
无论OS /编译器是否标准整个阵列都将被设置为NULL?
是的,它是有效的,并由C++标准保证.
参考:
C++ 03标准8.5.1聚合
第7段:
如果列表中的初始值设定项少于聚合中的成员,则未明确初始化的每个成员都应进行值初始化(8.5).[例:
Run Code Online (Sandbox Code Playgroud)struct S { int a; char* b; int c; }; S ss = { 1, "asdf" };初始化
ss.awith1,ss.bwith"asdf"和ss.cwith表达式的表达式int(),即0.]
值初始化定义如下:
C++ 03 8.5初始化程序
第5段:
到值初始化类型的物体T是指:
-如果T是一个类型(第9节)与用户声明的构造(12.1),然后对T中的默认构造函数被调用(以及初始化是形成不良的如果T没有可访问的默认构造函数);
- 如果T是没有用户声明的构造函数的非联合类类型,则T的每个非静态数据成员和基类组件都是值初始化的;
- 如果T是数组类型,则每个元素都是值初始化的;
- 否则,对象被零初始化
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |