聚合类

当一个类满足如下条件,是聚合的:

  • 所有成员都是 public 的。
  • 没有定义任何构造函数。
  • 没有类内初始值。
  • 没有基类,也没有 virtual 函数。

一个聚合类:

struct Data
{
    int ival;
    string s;
}

提供一个花括号括起来的成员初始值列表,并用它初始化聚合类的数据成员:

//val1.ival = 0; val1.s = string("Anna")
Data val1={0,"Anna"};

初始值的顺序必须与声明的顺序一致:

//错误:不能使用 "Anna" 初始化 ival ,也不能使用 1024 初始化 s
Data val2 = {"Anna",1024};

初始值列表中的元素个数少于类的成员数量,靠后的成员被值初始化。

初始值列表的元素个数不能超过类的成员数量。

显式初始化类的对象的成员三个明显的缺点:

  • 要求类的所有成员都是 public 的。
  • 将正确初始化每个对象的每个成员的重任交给了类的用户。
  • 添加或删除一个成员之后,所有的初始化语句都需要更新。
posted @ 2019-10-06 13:20  CodeWithMe  阅读(365)  评论(0)    收藏  举报