清华大学:《C++语言程序设计》课程教学资源(PPT课件)第七章 继承与派生

C++语言程序设计 第七章继承与派生 x
1 第七章 继承与派生 C++语言程序设计

C++语言程序设计 本章简介 C++支持类的继承与派生机制。 继承与派生是面向对象程序设计的关键概念。 ●通过继承与派生,实现代码重用。 x
C++语言程序设计 2 本章简介 ⚫ C++支持类的继承与派生机制。 ⚫ 继承与派生是面向对象程序设计的关键概念。 ⚫ 通过继承与派生,实现代码重用

C++语言程序设计 本章主要内容 ●类的继承与派生 ●类成员的访问控制 单继承与多继承 ●派生类的构造、析构函数 ●多级多继承中成员的标识与访问 x
C++语言程序设计 3 本章主要内容 ⚫类的继承与派生 ⚫类成员的访问控制 ⚫单继承与多继承 ⚫派生类的构造、析构函数 ⚫多级多继承中成员的标识与访问

C++语言程序设计 类的继承与派生 保持已有类的特性而构造新类的过程 称为继承。 在已有类的基础上新增自己的特性而 产生新类的过程称为派生。 ●被继承的已有类称为基类(或父类)。 派生出的新类称为派生类。 x
C++语言程序设计 4 类的继承与派生 ⚫ 保持已有类的特性而构造新类的过程 称为继承。 ⚫ 在已有类的基础上新增自己的特性而 产生新类的过程称为派生。 ⚫ 被继承的已有类称为基类(或父类)。 ⚫ 派生出的新类称为派生类

C++语言程序设计 继永与派生问题举例 类 交通工具 的 继 汽车 承与派生 事物的层次关系 小汽车卡车旅行车 工具车轿车面包车 x
C++语言程序设计 5 继承与派生问题举例 工具车 轿 车 面包车 小汽车 卡 车 旅行车 汽 车 类 交通工具 的 继 承 与 派 生 事 物 的 层 次 关 系

C++语言程序设计 继永与派生的目的 类 的。继承的目的:实现代码重用。 继 承·派生的目的:当新的问题出现,原有 与程序无法解决(或不能完全解决)时, 派 生需要对原有程序进行改造。 x
C++语言程序设计 6 继承与派生的目的 ⚫ 继承的目的:实现代码重用。 ⚫ 派生的目的:当新的问题出现,原有 程序无法解决(或不能完全解决)时, 需要对原有程序进行改造。 类 的 继 承 与 派 生

C++语言程序设计 继承与派生的工作方式 假设已经有了一个学生类 Student ●因为应用的需要,要创建研究生类 Graduate Student ●研究生除了自己特有的属性外,具有学生 的所有性质 用继承与派生的方法重用学生类。 x
C++语言程序设计 7 继承与派生的工作方式 ⚫ 假设已经有了一个学生类Student ⚫ 因为应用的需要,要创建研究生类 GraduateStudent ⚫ 研究生除了自己特有的属性外,具有学生 的所有性质 ⚫ 用继承与派生的方法重用学生类

nc据i腦雄砌饼 #include <string using namespace std class Student [public: Student(char pname="nobody") Istrcpy(name, pname); average= semesterHours =0; y void add Course(int hours, float grade average=( semesterHours* average+ grade);∥总分 semesterHours+= hours;∥总修学时 average/= semesterHours;∥平均分} oid display cout << name=<<name < hours="<<semester Hours<<", average="<<average<<endl; 1 protected: char name[401 int semesterHours float average
C++语言程序设计 8 #include #include using namespace std; class Student {public: Student(char *pname="nobody") {strcpy(name,pname); average = semesterHours =0; } void addCourse(int hours,float grade) { average = (semesterHours * average + grade); //总分 semesterHours +=hours; //总修学时 average /=semesterHours; //平均分} void display() {cout <<"name = "<<name <<",hours = "<<semesterHours<<",average = "<<average<<endl;} protected: char name[40]; int semesterHours; float average; };

C++语言程序设计 class Advisor i int noofMeeting class Graduate Student: public Student public int getQualifier (return qualifier Grade 1 rotected Advisor advisor int qualifier Grade;
C++语言程序设计 9 class Advisor { int noOfMeeting; }; class GraduateStudent:public Student { public: int getQualifier(){return qualifierGrade;} protected: Advisor advisor; int qualifierGrade; };

C++语言程序设计 void tn(student &s) 【∥任何需要处理的学生问题 int main( i Student ds(John") Graduate Student gs 对象gs可以做对象ds能做 ds. add Course(4, 8.5) 的任何事情。 ds display gs addCourse(3, 7.5) gs display x fn(gs)
C++语言程序设计 10 void fn(Student &s) { //任何需要处理的学生问题 } int main() { Student ds("John"); GraduateStudent gs; ds.addCourse(4,8.5); ds.display(); gs.addCourse(3,7.5); gs.display(); fn(gs); } 对象gs可以做对象ds能做 的任何事情
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第六章 数组、指针与字符串.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第五章 C++程序的结构.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第九章 文件.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第八章 排序.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第七章 查找.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第六章 图.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第五章 树和二叉树.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第四章 串和数组.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第三章 栈和队列.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第二章 线性表.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第一章 数据结构基础概论.ppt
- 人民邮电出版社:高等学校教材《C程序设计》课程教学资源(PPT课件)第9章 数组.ppt
- 人民邮电出版社:高等学校教材《C程序设计》课程教学资源(PPT课件)第8章 函数.ppt
- 人民邮电出版社:高等学校教材《C程序设计》课程教学资源(PPT课件)第7章 循环结构程序设计.ppt
- 人民邮电出版社:高等学校教材《C程序设计》课程教学资源(PPT课件)第6章 选择结构程序设计.ppt
- 人民邮电出版社:高等学校教材《C程序设计》课程教学资源(PPT课件)第5章 顺序结构程序设计.ppt
- 人民邮电出版社:高等学校教材《C程序设计》课程教学资源(PPT课件)第4章 数据类型及表达式.ppt
- 人民邮电出版社:高等学校教材《C程序设计》课程教学资源(PPT课件)第3章 C语言概述.ppt
- 人民邮电出版社:高等学校教材《C程序设计》课程教学资源(PPT课件)第2章 程序设计基础知识.ppt
- 人民邮电出版社:高等学校教材《C程序设计》课程教学资源(PPT课件)第15章 编译预处理.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第八章 多态性.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第九章 群体类和群体数据的组织.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十章 C++标准模板库.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十一章 流类库与输入/输出.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十二章 异常处理.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)课程简介(李莉).ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第一章 绪论.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第二章 C++简单程序设计.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第三章 函数.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第四章 类与对象.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第二章 线性表.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第九章 查找.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第六章 树和二叉树.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第三章 栈和队列.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第十章 排序.ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第四章 字符串(String).ppt
- 天津大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第一章 绪论(李晓红).ppt
- 人民邮电出版社:网页及HTML语言.ppt
- 高等教育出版社:《电子商务概论》课程教学资源(PPT电子教案)第一章 电子商务概述(宋文官).ppt
- 高等教育出版社:《电子商务概论》课程教学资源(PPT电子教案)第七章 典型解决方案.ppt