加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 什么是聚合类?

发布时间:2020-12-16 10:11:37 所属栏目:百科 来源:网络整理
导读:我刚刚在第298页的C Primer(第5版)中阅读了以下定义: A class is an aggregate if: All of its data members are public It does not define any constructors It has no in-class initializers It has no base classes or virtual functions 本文还提供了
我刚刚在第298页的C Primer(第5版)中阅读了以下定义:

A class is an aggregate if:

  • All of its data members are public

  • It does not define any constructors

  • It has no in-class initializers

  • It has no base classes or virtual functions

本文还提供了一个定义:What are Aggregates and PODs and how/why are they special?.

毕竟我在本书的前几节中读到了封装的价值,我想知道:为什么有人想要使用聚合类? (顺便说一下,这个问题似乎适用于一般的结构:为什么我要公开:默认情况下?)

解决方法

聚合基本上是一个简单的数据集合,没有该类必须保证的任何不变量.由于没有不变量,因此成员的可能值的所有组合都有意义,因此没有必要保护它们是私有的.

这样一个类的一个简单例子就是这样的

struct Point3d {
   std::array<double,3> coordinates;
};

由于每三倍的双精度是R ^ 3中的一个点,因此隐藏数据没有任何好处. (如果您害怕NaN和无穷大值,这可能不是最好的主意.如果发生这种情况,您可能不希望将其作为聚合.)

聚合类型的另一个例子是std::array.同样,它只是一个类型和一些(不可变)长度的数组,因此没有保持不变量.

聚合物的一个优点是aggregate initialization.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读