【问题标题】:Understanding member of array了解数组的成员
【发布时间】: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


【解决方案1】:

C++ 标准中定义的“成员”概念:

类的成员是数据成员、成员函数、嵌套类型和枚举器。

§9.2 [class.mem]

由于数组不是类类型,因此不会开始应用于数组。

【讨论】:

    猜你喜欢
    • 2018-10-22
    • 2011-01-10
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    • 2013-07-05
    相关资源
    最近更新 更多