【发布时间】:2014-08-14 04:43:19
【问题描述】:
member 概念是否适用于数组(即数组的member)。数组的元素和成员是不同的概念吗?
3.8/1 N3797:
如果一个对象属于 类或聚合类型,并且它或其中一个成员由以下方式初始化 一个普通的默认构造函数以外的构造函数。
[...]
类型 T 的对象的生命周期开始于:
——存储与 获得类型 T 的正确对齐方式和大小,并且
——如果对象有非平凡的初始化,它的初始化就完成了
8.1/1 N3797:
聚合是数组或没有用户提供的类(第 9 条) 构造函数(12.1),没有私有或受保护的非静态数据成员 (第 11 条),没有基类(第 10 条),没有虚函数 (10.3)。
3.8/2:
[注意:数组对象的生命周期从存储时开始 获得适当的大小和对齐方式,并且它的生命周期结束时 阵列占用的存储空间被重用或释放。 12.6.2 描述基础和成员子对象的生命周期。 ——尾注]
所以我假设数组的元素和数组的成员是不同的概念。
【问题讨论】:
-
您似乎已经回答了自己的问题?
-
"对象可以包含其他对象,称为子对象。一个子对象可以是一个成员子对象(9.2),一个基类子对象(第 10 条),或 数组元素。” - 所以它是 element,它是 subobject 的一种类型。
标签: c++ arrays language-lawyer