已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
10.继承(inheritance),10.1.1 类层次结构,几个概念: 基类(父类) 派生类(子类):从基类派生而成的类 基类和派生类:构成类的层次关系,10.1.2 派生类对象构造 (Derived Object Structure),基类:BaseClass class BaseClass int a,b; /other private member public: /public member ;,派生类:B class B : public BaseClass int c; /other private member public: /public member ;,a b,BaseClass,a b c,B,基类部分,派生部分,10.2 访问父类成员,10.2.1 继承父类成员 /= / f1001.cpp / 继承 /= #include #include using namespace std; /- class Advisor int noOfMeeting; ; /-,class Student string name; int semesterHours; double average; public: Student(string pName = “noname“) :name(pName),average(0),semesterHours(0) void addCourse(int hours,double grade) double totalGrade = (semesterHours*average + grade); /总分 semesterHours += hours; /总修学时 average = semesterHours ? totalGrade/semesterHours : 0; /平均分 ,int getHours() return semesterHours; double getAverage() return average; void display() cout“name = “name“ “,hours = “semesterHours “,average = “averageendl; ;,class GraduateStudent:public Student Advisor advisor; int qualifierGrade; public: int getQualifier() return qualifierGrade; ;,void main() Student ds(“Lo lee Undergrad“); GraduateStudent gs; ds.addCourse(3,2.5); ds.display(); gs.addCourse(3,3.0); gs.display(); ,图 GraduateStudent 内存布局,example,GraduateStudent gs; Student s(gs); Student,example,void fn(Student ,C+面向对象编程中一条重要的规则是: 公有继承意味着”是一个”(is a),对于class D : public B; 当写下类D(”Derived”)从类B(”Base”)公有继承时,你实际上是在告诉编译器(以及读这段代码的人):类型D的每一个对象也是类型B的一个对象,但反之不成立; 也就是说,B表示一个比D更广泛的概念,D表示一个比B更特定概念;你是在声明:任何可以使用类型B的对象的地方,类型D的对象也可以使用,因为每个类型D的对象是一个类型B的对象。相反,如果需要一个类型D的对象,类型B的对象就不行:每个D “是一个“ B, 但反之不成立。,看这个例子: class Person . ; class Student: public Person . ;,从日常经验中我们知道,每个学生是人,但并非每个人是学生。这正是上面的层次结构所声明的。我们希望,任何对 “人” 成立的事实,如:都有生日,也对 “学生” 成立;但我们不希望,任何对 “学生” 成立的事实, 如:都在某一学校上学,也对 “人“ 成立。人的概念比学生的概念更广泛;学生是一种特定类型的人。,在C+中,任何一个其参数为Person类型的函数(或Person的指针或Person的引用)可以实际取一个Student对象(或Student的指针或Student的引用),例: void dance(const Person / 错误! p不是学生,10.2.2 类内访问控制,继承成员的访问方式 class Base int a ; public: void print() couta; /public member ; class Derived:public Base int b; public: void display() couta; /public member ;,protected,class Base int a; void f()couta; public: int b; void g()couta; protected: int c; void k() couta; ;,class Derived:public Base public: void df() couta; coutb; coutc; f(); g(); k(); ;,void func() Base b; coutb.a; coutb.b; coutb.c; b.f(); b.g(); b.k(); ,10.3派生类的构造,10.3.1 默认构造 通过默认的无参构造函数。,10.3.2 自定义构造,/= / f1002.cpp / 构造派生类 /= #include #include using namespace std; /-,class Advisor int noOfMeeting; public: Advisor()cout“Advisorn“; Advisor(const Advisor,class Student string name; int semesterHours; double average; public: Student(string pName = “noname“):name(pName),average(0),semesterHours(0) cout“Studentn“; void addCourse(int hours,double grade) double totalGrade = (semesterHours*average + grade); /总分 semesterHours += hours; /总修学时 average = semesterHours ? totalGrade/semesterHours : 0; /平均分 ,int getHours() return semesterHours; double getAverage() return average; void display() cout“name = “name“ “,hours = “semesterHours “,average = “averageen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025崇明区新村乡基层残疾人工作者招聘1人(公共基础知识)测试题附答案
- 2025新疆和田地区融媒集团有限公司招聘1人考试题库附答案
- 苹果局域网协议书在哪
- 2025年铜川市王益区总工会招聘(4人)考试题库附答案
- 2026中国移动湖南公司校园秋季招聘(公共基础知识)测试题附答案
- 企业房屋租赁培训课件教学
- 钢结构施工现场应急预案
- 高考语文复习2025年12月20日周六《新闻周刊》人物适用话题总结及运用示例
- 企业心理培训课件
- 法律委托代理框架协议书
- 总承包管理实施指南
- 2025永丰街道平安工作服务站工作人员招聘7人模拟笔试试题及答案解析
- 2025西部科学城重庆高新区人才紧缺招聘35人笔试考试备考题库及答案解析
- 2025云南省人民检察院招聘22人笔试考试参考题库及答案解析
- 2025年慢性阻塞性肺病药物使用规范答案及解析
- 2026(人教版)数学五上期末复习大全(知识梳理+易错题+压轴题+模拟卷)
- DB3205-T 1123-2024 职业教育集团建设与运行规范
- 2025年政府财务岗面试题及答案
- 广东省东华高级中学2026届高一化学第一学期期末统考试题含解析
- 2025医疗器械检测行业全面分析及质量监管与发展趋势报告
- 口腔诊所管理运营培训课件
评论
0/150
提交评论