一、概念
  • 聚合类使得用户可以直接访问其成员,并且具有特殊的初始化语法
二、聚合类的条件

当类满足一下所有条件时,才是聚合类:

  • 所有成员都是public
  • 没有定义任何构造函数
  • 没有类内初始值
  • 没有基类,也没有virtual函数
struct Data {
    int ival;
    string s;
};
class Cperson
{
public:
    int id;
    string name;
};
三、聚合类的初始化
  • 直接使用花括号进行初始化
  • 注意:初始化顺序必须与类内定义的顺序一致
struct Data {
    int ival;
    string s;
};

Data val = { 0,"Hello" };  //正确
Data val2 = {"Hello",0 };  //错误
class Cperson
{
public:
    int id;
    string name;
};

Cperson person={ 66,"xiaoming" };
Cperson person2{ 66 };
四、缺点
  • 要求类的成员都是lublic
  • 将正确初始化每个对象的每个成员的重任交给了类的用户。因此用户很容易忘记掉某个初始值,或者提供一个不正确的值
  • 删除或者添加一个成员之后,所有的初始化语句都需要更新