6.5 类与对象 【C++】 ----继承

陌路散爱 提交于 2020-01-26 14:00:52

新建一个类Employee ——》 基类:输入Person

在这里插入图片描述

引言:①一个类Employee它首先是个人(即基于类Person);
②main.cpp只需要包含头文件"Employ.h" ,不需要包含 “Person.h” (因为在Employ.h已经引用了Person.h)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

完善信息: 【这里懒得到Employee.cpp里定义函数,直接在.h里定义函数了】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下面这个: Employee的大小为 : Emplyee属性之和 + Person属性之和
在这里插入图片描述

在这里插入图片描述

【注意:子类不能访问符类的私有属性,如: 如果 iWeight是私有的,那么 employee e;后, e.iWeight; 语句是错误的】

在这里插入图片描述
在这里插入图片描述

修改一下Person的构造函数

Employee e;
Employee的构造函数会先调用Person的构造函数执行
即声明一个子类Employee对象时,会调用父类Person的构造函数,再去调用自己本身的构造函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结:(如图)
在这里插入图片描述
【注意: 上图中的 :Person()
当父对象的构造函数没有参数时,可以不写这语句;
但是如果有参数时,就必须写,并且得加参数 (下图有解析)

修改: 加参数

在这里插入图片描述
在这里插入图片描述
再修改: 传 “ 引用 ”更快 , 并且说明不改它(const)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
但我们实际是以下图的操作实现的:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以再优化:(Employee的构造函数)

在这里插入图片描述

继承链

D的父类是C, C的父类是B, B的父类是A

那当我们实例化D类对象时,D的构造函数会执行C的构造函数,而C的构造函数又会执行B的构造函数;
而B的构造函数又会执行A的构造函数
即实例化一个D类对象,会导致好几个构造函数的执行

在这里插入图片描述

析构函数:

先执行父类Person构造函数,再执行子类Employee构造函数
main函数结束时,
先执行子类Employee析构函数,再执行父类Person析构函数

【说明: 子类Employee的析构函数(执行完后)会自动调用Person的析构函数】

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

父类的私有成员,保护成员;子类可以访问吗?

在这里插入图片描述

在这里插入图片描述

主函数中,子类不能访问父类的保护成员和私有成员
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!