第五章 继承与派生
2020-04-04 16:02:29来源:博客园 阅读 ()
第五章 继承与派生
目录
- 基本概念
- 继承关系&复合关系
- protected保护成员
- 派生类的构造函数
- public继承的赋值兼容性规则
基本概念
- 继承和派生是一个概念
- 当新类(派生类)与已有类(基类)具有相似的特性(包含已有类所有特性),则可以通过继承获得已有类的全部对象。
- 继承是对原有对象的复用,同时在此基础上进行修改(覆盖)与扩充。
- 派生类会继承基类的所有成员(private、protected、public),但派生类成员函数无法访问基类的private成员
- 继承方式:
class 派生类名:访问属性 基类名{}
- 存储空间:派生类中新声明的成员,其存储空间位于继承的基类成员存储空间之后
- 派生类成员覆盖基类成员后,成员函数可通过
基类名::基类成员名
调用被覆盖的基类成员(一般不会覆盖基类成员变量,而是覆盖成员函数)
继承关系&复合关系
-
继承逻辑(“是”):派生类是一种基类(如狗是动物)
-
复合逻辑(“有”):如果类A是类B的成员对象,则类B包含类A,类A是类B的一种固有属性或组成部分
class Point{ double x,y; } class Circle{ //不用继承,而采用复合关系 Point center; double r; }
复合关系的另一种情况:
class Master; class Dog{ Master *m; } class Master{ Dog *dog[10]; }
protected保护成员
- 可通过基类成员函数、基类友元函数访问,派生类成员函数可访问当前对象的基类
protected
保护成员
派生类的构造函数
- 创建派生类对象时,先调用基类构造函数对从基类中继承的变量初始化,然后才是调用派生类构造函数;
- 先构造的后析构
- 调用基类构造函数的两种方式:
- 显式调用:直接在派生类构造函数的初始化列表中调用;
- 隐式调用:使用基类空构造函数进行初始化(若没有该函数,则报错)
public继承的赋值兼容性规则
-
派生类对象可以赋值给基类对象、初始化基类引用;派生类对象地址可以赋值给基类指针
-
若继承方式改成protected或private,上述规则1不成立
class base{} class derived:public base{} base b; derived d; b=d; base &br=b; base *bp=&b; //bp不能访问属于derived类的部分 derived *dp=(derived*)bp; //强制类型转换,需要保证bp指向derived类
-
直接基类:派生类直接继承的基类
间接基类:直接基类继承的所有基类 -
声明派生类时,只需声明其直接基类;派生类会自动向上继承其间接基类
-
构造顺序:间接基类→直接基类→派生类(析构反之)
原文链接:https://www.cnblogs.com/DreamEagle/p/12632043.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:第四章 运算符重载
下一篇:第七章 1.输入输出与模板
- 从Student类和Teacher类多重派生Graduate类 代码参考 2020-04-21
- 从Point类继承的Circle类 代码参考 2020-04-21
- 公有继承中派生类Student对基类Person成员的访问 代码参考 2020-04-20
- C++ 类的继承和派生 2020-03-24
- 算法训练 第五次作业:字符串排序 2020-02-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash