【简单易懂】c++中组合与聚合
组合:即不十分相关的东西,集成在一起。譬如:电脑是一个类,由鼠标、键盘、显示器、主机这4个类组合而成,可插拔。实现中:一般为传参数。
聚合:即类的本身属性,密不可分割。譬如:人是一个类,由手臂、大腿、躯干三个类组成,不可分割,生命周期相同。实现中:一般为成员属性。
c++举例来看:
//组合(传参数)
#include
using namespace std;
class Frind{friend void add(Frind* pFrind); //友元函数friend class Add; //友元类
public:int get(){return money;};
protected:int money=10;
};class Add{public:/*Add(Frind* pFrind){mpFrind = pFrind;}*/
//protected:void func(Frind* mpFrind){ //传入参数//mpFrind = pFrind;mpFrind->money +=10;cout <<"内部:"<< mpFrind->money << endl;};
};void add(Frind* pFrind){pFrind->money += 100;
}int main(){Frind* pFrind = new Frind();//add(pFrind);Add* pAdd = new Add();pAdd->func(pFrind);cout << pFrind->get() << endl;system("PAUSE");
}
运行结果如图:
#include
using namespace std;
class Frind{friend void add(Frind* pFrind);friend class Add;
public:int get(){return money;};
protected:int money=10;
};class Add{public:Add(Frind* pFrind){ //构造方法mpFrind = pFrind; //利用外部对象参数,给内部属性赋值}
//protected:void func(){//mpFrind = pFrind;mpFrind->money +=10;cout <<"内部:"<< mpFrind->money << endl;};
private:Frind* mpFrind; //内部属性
};void add(Frind* pFrind){pFrind->money += 100;
}int main(){Frind* pFrind = new Frind();//add(pFrind);Add* pAdd = new Add(pFrind);pAdd->func();cout << pFrind->get() << endl;system("PAUSE");
}
运行结果如图:
两种方式运行结果一样,具体用哪种方式更优,视情况而定(不在本文讨论范围)。
多补充一个知识点,多态的作用(仔细分析哦,很经典的):
1、统一接口,高度复用
2、向后兼容,灵活扩展
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
