(41)--5.3.3多层派生时的构造函数.ppt
多多层派生派生时的构造函数的构造函数 多层派生的概念:多层派生的概念:一个类不仅可以派生出一个派生类,派生类还可以继续派生,形成派生的层次结构 思考:思考:多层派生时的构造函数包含哪些任务?如何定义多层派生时的构造函数?多层派生时的构造函数执行顺序?程序程序实例例多多级派生派生时派生派生类的构造函数的构造函数 派生关系图:派生关系图:程序程序实例例多多级派生派生时派生派生类的构造函数的构造函数#include#includeusing namespace std;class Student/声明基声明基类 public:/公用部分公用部分 Student(int n,string nam)/基基类构造函数构造函数 num=n;name=nam;void display()/输出基出基类数据成数据成员 coutnum:numendl;coutname:nameendl;protected:/保保护部分部分int num;/基基类有两个数据有两个数据成成员 string name;程序程序实例例多多级派生派生时派生派生类的构造函数的构造函数class Student1:public Student /声明公用派生声明公用派生类Student1 public:Student1(int n,char nam10,int a):Student(n,nam)age=a;void show()/输出出num,name和和age display();/输出出num和和name coutage:ageendl;private:/派生派生类的私有数据的私有数据 int age;/增加一个数据成增加一个数据成员;程序程序实例例多多级派生派生时派生派生类的构造函数的构造函数class Student2:public Student1 /声明声明间接公用派生接公用派生类Student2 public:Student2(int n,string nam,int a,int s):Student1(n,nam,a)score=s;void show_all()/输出全部数据成出全部数据成员 show();/输出出num、name 和和age coutscore:scoreendl;private:int score;/增加一个数据成增加一个数据成员;int main()Student2 stud(10010,Li,17,89);stud.show_all();/输出学生的全部数据出学生的全部数据return 0;多多层派生派生时的构造函数的构造函数 任务:任务:每一层派生类负责处理所继承自基类部分、子对象部分以及派生类新添加部分的初始化 如何定义:如何定义:基类的构造函数首部:Student(int n,string nam)派生类Student1的构造函数首部:Student1(int n,string nam,int a):Student(n,nam)派生类Student2的构造函数首部:Student2(int n,string nam,int a,int s):Student1(n,nam,a)多多层派生派生时的构造函数的构造函数 初始化顺序:初始化顺序:先初始化基类的数据成员num和name再初始化Student1的数据成员age最后再初始化Student2的数据成员score小小结多层派生时构造函数的任务1多层派生时构造函数的定义2多层派生时构造函数的初始化顺序3