- 聚合类使得用户可以直接访问其成员,并且具有特殊的初始化语法
当类满足一下所有条件时,才是聚合类:
- 所有成员都是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
- 将正确初始化每个对象的每个成员的重任交给了类的用户。因此用户很容易忘记掉某个初始值,或者提供一个不正确的值
- 删除或者添加一个成员之后,所有的初始化语句都需要更新