- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第05章继承与派生C课件讲述
类模板允许定义友元。在一个类模板中,可以声明如下三种形式的友元函数: 友元函数为一般函数,则它是该类模板的所有实例化类的友元函数 友元函数为函数模板,但其类型参数与类模板的类型参数无关,则该函数模板的所有实例化函数都是类模板的所有实例化类的友元函数 友元函数为函数模板,但其类型参数与类模板的类型参数有关。通常,函数模板往往用该类模板作为其函数参数的类型,此时该友元函数模板的实例有可能只是该类模板的某些特定实例化(而不是所有实例化)类的友元 5.5 应用举例 【例5.12】类模板和模板类的使用 【例5.13】定义一个单向链表的模板类,分别实现增加、删除、查找和打印操作 【例5.14】定义了一个基类Person类及其两个派生类(Teacher和Student) 【例5.15】某个单位现有的所有员工根据领取薪金的方式分为如下几类:时薪工(hourly worker),计件工(piece worker),经理(manager),佣金工(commission worker)。时薪工按工作的小时支付工资,对于每周超过50小时的加班时间,按照附加50%支付。按生产的每件产品给计件工支付固定工资,假定该工人仅制造一种产品。经理每周得到固定的工资。佣金工每周得到少许的固定保底工资,加上该工人在一周内总销售的固定百分比。试编制一个程序来实现该单位的所有员工类,并加以测试 【例5.16】从二叉排序树中删除一个结点 习题 1. 什么是类的继承与派生? 2. 类的三种继承方式之间的区别是什么? 3. 派生类能否直接访问基类的私有成员?若否,应如何实现? 4. 派生类构造函数和析构函数的执行顺序是怎样的?在多继承中,派生类构造函数和析构函数的执行顺序又是怎样的? 5. 派生类的构造函数和析构函数的作用是什么? 6. 多继承一般应用在哪些场合? 7. 在类的派生中为何引入虚基类?在含有虚基类的派生类中,当创建它的对象时,构造函数的执行顺序如何? 8.设计一个大学的类系统,学校中有学生、教师、职员,每种人员都有自己的特性,他们之间又有相同的地方。利用继承机制定义这个系统中的各个类及类上必须的操作 9.假定车可分为货车和客车,客车又可分为轿车、面包车和公共汽车。请设计相应的类层次结构 10.设计一个能细分为矩形、三角形、圆形和椭圆形的“图形”类。使用继承将这些图形分类,找出能作为基类部分的共同特征(如宽、高、中心点等)和方法(如初始化、求面积等),并看看这些图形是否能进一步划分为子类 11.考虑大学的学生情况,试利用单继承来实现学生和毕业生两个类,设计相关的数据成员及函数,编程进行测试继承的情况 12. 定义一个哺乳动物类,再由此派生出人类、狗类和猫类,这些类中均有speak()函数,观察在调用过程中,到底使用了谁的speak()函数 13. 通过多重继承定义研究生类,研究生既有学生的属性,又有教师的属性 温故而知新,可以为师矣 理想犹如天上的星星,我们犹如水手,虽不能到达天上,但是我们的航程可凭它指引 ———— 美国政治家 舒尔茨·C 理想是指路明灯。没有理想,没有坚定的方向;没有方向,没有生活 ———— 俄国作家 托尔斯泰·L 你的程序设计能力与你投入到计算机上的时间成正比 要想学好程序设计,就得多读程序,多编程序,多调试程序 class base { public: x(); x(int a); x(char * p); }; class derive : base { public: base::x; //基类中所有重载函数x在派生类中将变为公有 }; (5)若派生类中具有与基类同名的函数,则基类中此函数不能在派生类中进行访问声明,因为此时基类的同名函数在派生类的作用域中不可见 class derive : base { public: void f(int s); base::f; //错误,不能调整访问域 }; 5.2 多继承 5.2.1 多继承的概念和定义 5.2.2 赋值兼容规则 5.2.3 二义性和支配规则 5.2.1 多继承的概念和定义 class派生类名:[继承方式]基类名1,[继承方式]基类名2, ..., [继承方式]基类名n { //定义派生类自己的成员; }; 多继承可以看作是单继承的扩展,单继承可以看作是多继承的一个最简单的特例 5.2.2 赋值兼容规则(类型自动转换) 在公有派生情况下,每个派生类的对象都是基类的一个对象,它继承了基类的所有成员并没有改变其访问权限。赋值兼容规则就是在公有派生情况下,允许一个派生类的对象可以作为基类的对象来使用的地方。具体而言,有三种情况可以把一
您可能关注的文档
- 第01章矢量讲述.ppt
- 童年下雪了卤蛋讲述.pptx
- 第01章项目管理概述1讲述.ppt
- 第01章电子商务基础讲述.ppt
- 第01章矢量和场论基础讲述.ppt
- 第00章机设基础讲述.ppt
- 第01章:建库建表建约束练习讲述.ppt
- 第17课物联网中的“身份证”—电子标签详解.ppt
- 第01讲利用Kali工具进行信息收集讲述.ppt
- 竹子与服饰讲述.ppt
- 2025年智能快递驿站行业政策与市场机遇报告.docx
- 2025年校园安全防范中新能源电动巡逻车采购可行性分析.docx
- 2025年智能垃圾分类智慧监管平台在智慧旅游区的应用前景研究.docx
- 2025年智能家居报告:人工智能伦理风险的法律责任与用户隐私保护.docx
- 2025年智能垃圾分类与垃圾分类信息化管理结合的可行性研究.docx
- 2025年智慧社区远程医疗诊断中心在基层医疗机构运营管理中的应用报告.docx
- 2025年智慧社区:老年活动广场智能化升级研究.docx
- 2025年智能社区新能源电动巡逻车市场应用前景分析报告.docx
- 2025年智能垃圾分类智慧监管平台在垃圾分类回收与处理中的智能化改造路径.docx
- 2025年本土半导体材料产业链国产化战略布局报告.docx
文档评论(0)