C++中某个类聚合某个类是什么意思?

如题所述

聚合关系是面向对象中的对象与对象之间的关系,这种关系就手机和电池的关系一样,一台手机需要一个电池,这样它才能工作。但是假设手机坏了,电池却没有损坏,这时电池就是可用的,它可以放在别的同型号手机上使用。
聚合与组合是有区别的,组合则是整体要是完了,局部也会跟着完蛋。
在C++中聚合和关联实际上是一样的实现,比如
class A
{
//成员
};

class B
{
A *point; //指向A类的指针,如果是组合则是A obj;,即包含A类的一个对象,类B要是被销毁了,那还会有这个obj对象吗?
};
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-06-13
1、聚合类是一种没有用户定义的构造函数,没有私有(private)和保护(protected)非静态数据成员,没有基类,没有虚函数。这样的类可以由封闭的大括号用逗号分隔开初始化列表。下列的代码在 C 和 C++ 具有相同的语法:
struct C
{
int a;
double b;
};

struct D
{
int a;
double b;
C c;
};

// initialize an object of type C with an initializer-list
C c = { 1, 2 };

// D has a sub-aggregate of type C. In such cases initializer-clauses can be nested
D d = { 10, 20, { 1, 2 } };

如果一个类里面包含了用户自定义的构造函数,而又用{ xx, xx, ...}来初始化它的对象,编译器就会报错

vc —— error C2552: "xx" 不能用初始值设定项列表初始化非聚合

gcc—— error: xx must be initialized by constructor, not by '{...}'

2、聚合定义为:

数组

没有以下内容的类、结构和联合:

构造函数

私有或受保护的成员

基类

虚函数

编译器不允许在包含构造函数的聚合中使用数据类型。
第2个回答  2012-03-16
简单理解就是一个类包含了另外一个类,比如小汽车有4个车轮,小汽车类就聚合了车轮类。
第3个回答  推荐于2016-03-19
class B
{
};

class A
{
B b;
};
A聚合了B 懂?追问

聚合跟继承有什么区别?是相同的意思吗?

追答

举个例子吧! 你说某某 他属于人 说明他继承了人的属性 但是这个人聚合了胳膊啊,眼睛啊,鼻子呀,你能说他继承了眼睛的属性吗? 你能直接说他 他不是人 他是眼睛!!

本回答被提问者采纳
第4个回答  2013-04-15
回答的有问题吧,他说的是组合关系!