- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十一章 多态性与虚函数 案例一 函数重载 1. 问题描述 设计程序实现同一个函数Area根据提供参数的个数不同,分别实现圆和矩形面积的计算。 2. 问题分析 注意本案例中函数重载时的依据是什么,函数的类型、参数个数、参数类型等的不同。本例中函数重载(计算面积的函数,输入一个数,视为圆形;输入两个数,视为矩形,分别计算面积) 3. ?C++?代码 #include iostream.h #define PI 3.14 float Area(float r) {return PI*r*r;} float Area(float a, float b) {return a*b;} void main() { float r, a, b; //r作为圆的半径,a、b分别作为矩形的长和宽。 cout请输入圆的半径; cinr; cout请输入矩形的长:; cina; cout请输入矩形的宽:; cinb; cout圆的面积为:Area(r) 矩形的面积为:Area(a, b)endl; // Area(r)和Area(a, b)参数个数和类型不同 } 4. 程序运行结果 请输入圆的半径19 请输入矩形的长:5 请输入矩形的宽:4 圆的面积为:1133.54 矩形的面积为:20 11.1 多?态?性?概?述 用同一个名字来访问不同函数的性质被称作多态性。也就是说不同对象收到相同的消息时,产生不同的动作,比如让狗和鱼不同的两个对象移动,则狗会走,鱼会游。使用多态性,一些相似功能的函数可用同一个名字来定义,这不仅使得概念上清晰,还可达到动态链接的目的,实现运行时的多态性。 在C++?中,多态性的实现和联编这一概念有关。一个源程序经过编译、链接,成为可执行文件的过程就是联编。联编分为两类:静态联编和动态联编。静态联编,也称前期联编,是指在运行之前就完成的编译;动态联编,也称后期联编,是指在程序运行时才完成的编译。 静态联编支持的多态性称为编译时多态性,也称静态多态性。在C++?中,编译时多态性是通过函数重载和运算符重载实现的。动态联编支持的多态性称为运行时多态性,也称动态多态性。在C++?中,运行时多态性是通过继承和虚函数来实现的。 11.2 函 数 重 载 编译时的多态性可以通过函数重载来实现。函数重载有两种情况:一是参数有所差别的重载,意义在于它能用同一个名字访问一组相关的函数,在前面我们已经做过介绍;再一个是函数所带参数完全相同,只是它们属于不同的类,这些类之间一般有继承和派生关系。 例11.1 在基类和派生类中函数重载。 #includeiostream.h class Base{//基类 int x, y; public: Base(int a, int b) { x=a; y=b;} void display()//基类中的display()函数 { cout执行基类中的display()函数endl; coutx, yendl; } }; class Derived:public Base{//派生类Derived,Base公有派生出Derived类 int z; public: Derived(int a, int b, int c):Base(a, b) { z=c; } void display() //派生类中的display()函数 { cout执行派生类中的display()函数endl; coutzendl; } }; main() { Base b(20, 20); Derived d(8, 8, 30); b.display(); //执行基类中的display()函数 d.display(); //执行派生类中的display()函数 d.Base::display(); //执行基类中的display()函数 } 在基类和派生类中进行函数重载时,用以下两种方法可以在编译时区别重载函数: (1) 使用对象名加以区分。例如:b.display()和d.display()分别调用类Base和Derived的display()函数。派生类中会隐藏基类中与派生类同名的成员。 (2) 使用“类名::”加以区分。例如:d.Base::display()调用的是Base的display()函数。 案例二 运算符重载 1. 问题描述 将运算符“+”重载为复数的成员函数(复数的加法运算)。 2. 问题分析 注意掌握运算符如何重载为类的成员函数方式
您可能关注的文档
- 第9章 长期股权投资2020.ppt
- 第9章_软件工程项目后评价.pptx
- 第9章-动态规划与贪心策略.pptx
- 第9章类 与 对 象.ppt
- 第9章组合逻辑电路2021.pptx
- 第10章 PCB的DRC检查与生产输出.ppt
- 第10章 流动负债2020.ppt
- 第10章类 与 对 象.ppt
- 第10章时序逻辑电路2021.pptx
- 第10章-搜索策略.pptx
- 2025-2030中国喜莫比行业竞争优势分析与市场产销规模预测研究报告.docx
- 2025至2030风景游览区行业市场发展现状及有效策略与实施路径评估报告.docx
- 2025至2030中国农业机器人行业运营态势与投资前景调查研究报告.docx
- 2025-2030中国电石乙炔行业发展分析及发展趋势预测与投资风险研究报告.docx
- 2025至2030中国老年教育行业市场发展分析及经营案例与投资发展报告.docx
- 2025至2030中国瓷砖切割机行业项目调研及市场前景预测评估报告.docx
- 2025至2030管道工业气体行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030中国医药检测行业调研及市场前景预测评估报告.docx
- 2026中国冷冻莴苣行业竞争态势与盈利前景预测报告.docx
- 2025-2030起重机械市场发展现状调查及供需格局分析预测研究报告.docx
最近下载
- 一年级思维训练题1.doc VIP
- 市场营销_职业规划书.pdf VIP
- 企业风险管理—战略与绩效整合(中文版-雷泽佳译).pdf VIP
- 新能源充电桩建设项目监理大纲.docx VIP
- 2022年长沙幼儿师范高等专科学校招聘笔试真题及答案详解一套.docx VIP
- 武汉市部分学校2024-2025学年上学期元调模拟九年级化学试卷(word版含答案).pdf VIP
- 国开2025年秋《心理学》形成性考核练习1-6答案.docx
- 知识缺乏的护理诊断及措施.doc VIP
- IPD_PSSD_T_0092 数字化样机结构评审检查表_V2.1.xls VIP
- 2023年长沙幼儿师范高等专科学校招聘笔试真题附答案详解.docx VIP
原创力文档


文档评论(0)