C++的新类创建:继承与组合

组合和继承的主要目的是为了代码的重用。

1.什么是继承

A继承B,说明的是A是B的一种,并且B的所有行为对A都有意义
eg:
A=WOMAN B=HUMAN
A=鸵鸟 B=鸟(不行),因为鸟会飞,但是鸵鸟可不成

2.继承的一些规则

1)在继承中,所有继承的东西都默认为private,就算它原来在基类是public的,如果希望在子类中也是public,那么在继承时应该使用public声明
2)如果派生类重载了基类的函数,那么派生类的对象调用这些函数时将默认为调用派生类的版本,如果要用基类的版本则要加上类名和范围分解符
3)当创建一个派生对象时将默认调用基类的构造函数,其实不管是组合还是继承,基本思想就是在进入新类的构造函数体之前调用所有的构造函数。
4)有一些函数是非自动继承的:构造函数,析构函数,operator=

3.什么是组合

若在逻辑上A是B的“一部分”(a part of),则不允许B从A派生,而是要用A和其它东西组合出B。
例如眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部分,所以类Head应该由类Eye、Nose、Mouth、Ear组合而成,不是派生而成

4.两者的选择

is-a关系用继承表达,has-a关系用组合表达。继承体现的是一种专门化的概念而组合则是一种组装的概念。
另外确定是组合还是继承,最清楚的方法之一就是询问是否需要新类向上映射。

也就是说当我们想重用原类型作为新类型的内部实现的话,我们最好自己组合,如果我们不仅想重用内部实现而且还想重用接口的话,那就用继承。多态性对于接口的重用很重

转载于:https://www.cnblogs.com/zhangjing0502/archive/2012/05/25/2518279.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值