博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++的新类创建:继承与组合
阅读量:6452 次
发布时间:2019-06-23

本文共 757 字,大约阅读时间需要 2 分钟。

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

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

你可能感兴趣的文章
linux下MySQL安装登录及操作
查看>>
centos 7 部署LDAP服务
查看>>
揭秘马云帝国内幕:马云的野心有多大
查看>>
topcoder srm 680 div1
查看>>
算法专题(1)-信息学基本解题流程!
查看>>
模拟文件系统
查看>>
使用SSH连接Windows10 Ubuntu (WSL),Pycharm
查看>>
poj2155
查看>>
CSS动画之转换模块
查看>>
swift - UITextField 的用法
查看>>
检索和关闭游标+检索游标+关闭游标
查看>>
[开源]KJFramework.Message 智能二进制消息框架 -- 性能提升
查看>>
iOS项目分层
查看>>
CocosCreator 小知识
查看>>
如何称为演讲高手
查看>>
PHP坑之积累
查看>>
POJ3304:Segments——题解
查看>>
48.EXt.Data.JsonReader()
查看>>
UML关系图
查看>>
一个action读取另一个action里的session
查看>>