@H_403_0@聚合类特点:可以直接访问成员,具有特定的初始化语法。
@H_403_0@
@H_403_0@聚合类需要满足以下条件:
@H_403_0@1、所以成员是public
@H_403_0@2、没有定义任何构造函数。
@H_403_0@3、没有类内初始值。
@H_403_0@4、没有基类,没有虚函数。
@H_403_0@
@H_403_0@例如:
@H_403_0@struct Data{
@H_403_0@int ical
@H_403_0@string s;
@H_403_0@};
@H_403_0@聚合类可以用初始化表初始化成员。
@H_403_0@如 Data d = {111,"haha"}
@H_403_0@初始化表中元素的顺序要与成员变量的定义顺序一致。当初始值表中的元素个数少于类成员变量个数时,靠后的成员被初始化为默认值。初始化列表的元素个数绝不能多于类成员数。
@H_403_0@
@H_403_0@很显然,聚合类的条件也给他带来了不少缺点。
@H_403_0@1、要求类的所有成员都是public的,也就是对外可见的,破坏了封装性。
@H_403_0@2、由于没有构造函数,所以初始化每个成员的重任就交给了类的使用者,这样就导致容易出错。
@H_403_0@3、添加删除某个成员后,所有的初始化语句都要修改。