C++中的继承与派生教学内容.ppt

说明: 当基类的构造函数至少带一个参数,它所有的派生类都必须定义构造函数,甚至所定义的派生类构造函数的函数体可能为空,仅仅起参数的传递作用。 若基类使用缺省构造函数或不带参数的构造函数,则在派生类中定义构造函数时可略去“:基类名(参数表)”;此时若派生类也不需要构造函数,则可不定义构造函数。 如果派生类的基类也是一个派生类,则每个派生类只需负责其直接基类的构造,依次上溯。 由于析构函数是不带参数的,在派生类中是否要定义析构函数与它所属的基类无关,故基类的析构函数不会因为派生类没有析构函数而得不到执行,它们各自是独立的。 派生类构造函数和析构函数的调用顺序 基类的构造函数 子对象类的构造函数 派生类的构造函数 先执行派生类的析构函数。 然后调用子对象的析构函数。 最后调用基类的析构函数。 第三章 6----24 三、分支程序与循环程序设计 休息一下,巩固所学的知识 4.6 多重继承(参见教材8.3节) 多重继承定义: 一个类有两个或多个直接基类。 声明多重继承的方法: 多重继承派生类的构造函数: class 派生类名: 派生方式1 基类名1,派生方式2 基类名2,…,派生方式n 基类名n { … ; // 派生类新增和覆盖成员} 派生类名::派生类名(总形参列表) :基类名1 (实参列表1) ,基类名2 (实参列表2) , … ,基类名n(实参列表n) { …; //派生类中新增数据成员初始化语句 } 继承列表 各基类的排列顺序任意。 派生类构造函数的执行顺序: 先调基类构造函数(按声明派生类时基类出现的顺序,依次调用),再调派生类构造函数。 多继承时类的层次关系有很多种: C A B C A B N N 【例4.7】 多重继承 #include iostream #include string using namespace std; class Teacher //声明Teacher(教师)类 {public: //公用部分 Teacher(string nam,int a,string t) //构造函数 {name=nam; age=a; title=t;} void display() //输出教师有关数据 {coutname:nameendl; coutageageendl; couttitle:titleendl; } protected: //保护部分 string name; int age; string title; //职称 }; class Student //声明类Student(学生) {public: Student(string nam,char s,float sco) {name1=nam; sex=s; score=sco;} //构造函数 void display1() //输出学生有关数据 {coutname:name1endl; coutsex:sexendl; coutscore:scoreendl; } protected: //保护部分 string name1; char sex; float score; //成绩 }; class Graduate:public Teacher,public Student //声明多重继承的派生类Graduate {public: Graduate(string nam,int a,char s,string t,float sco,float w): Teacher(nam,a,t),Student(nam,s,sco),wage(w) {} void show( ) //输出人员的有关数据 {coutname:nameendl; coutage:ageendl; coutsex:sexendl;

文档评论(0)

1亿VIP精品文档

相关文档