新建一个类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的析构函数】
父类的私有成员,保护成员;子类可以访问吗?
主函数中,子类不能访问父类的保护成员和私有成员
来源:CSDN
作者:飞羽2333
链接:https://blog.csdn.net/weixin_44773006/article/details/104085900