- 1、本文档共70页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5单元多态性与虚函数
面向对象程序设计技术 第5章 多态性 5.1 多态性概述 所谓多态性就是不同对象收到相同的请求消息时,产生不同的动作。 直观地说,多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的操作,从而可以使用相同的调用方式来调用这些具有不同功能的同名函数。即“一个接口,多种方法”。 5.1.1 多态的分类 C++中的多态性可以分为四类: 参数多态:函数模板、类模板实例化产生的多态行为 包含多态:通过虚函数实现的、定义于不同类中的同名成员函数的多态行为 重载多态:通过函数重载和运算符重载实现的多态行为 强制多态:通过强制类型转化实现的多态行为。 前面两种统称为通用多态,而后面两种统称为专用多态。 5.1 多态性概述 5.1.2多态的实现 多态从实现的角度来讲可以划分为两类:编译时的多态和运行时的多态。 编译时的多态是通过静态联编来实现的。静态联编就是在编译阶段完成的联编。编译时多态性主要是通过函数重载和运算符重载实现的。 运行时的多态是用动态联编实现的。动态联编是运行阶段完成的联编。运行时多态性主要是通过虚函数来实现的。 5.2运算符重载 问题举例——复数的运算 定义一个简化的复数类complex: class complex { public: double real,imag; complex(double r=0,double i=0) { real=r; imag=i;} }; 若要把类complex的两个对象com1和com2加在一起,下面的语句是不能实现的: main() { complex com1(1.1,2.2),com2(3.3,4.4),total; total=com1+com2; //错误 //… return 0; } 即用“+”、“-”能够实现复数的加减运算,如果想实现,必须对运算符进行重载。 5.2.1运算符重载概述 运算符重载是对已有的运算符赋予多重含义 必要性 C++中预定义的运算符其运算对象只能是基本数据类型,而不适用于用户自定义类型(如类) 实现机制 将指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参。 编译系统对重载运算符的选择,遵循函数重载的选择原则。 5.2.1运算符重载概述 规则和限制 可以重载C++中除下列运算符外的所有运算符: . .* :: ?: 只能重载C++语言中已有的运算符,不可臆造新的。 不改变原运算符的优先级和结合性。也不改变运算符的语法结构,即单目运算符只能重载为单目运算符,双目运算符只能重载为双目运算符 不能改变操作数个数。 经重载的运算符,其操作数中至少应该有一个是自定义类型。 编译程序对运算符重载的选择遵循函数重载的选择规则 5.2.1运算符重载概述 三种形式: 在类外定义的普通函数 重载为类成员函数。 重载为友元函数。 5.2.2 在类外定义的运算符重载函数 5.2.2 在类外定义的运算符重载函数 5.2.3友元运算符函数 在C++中,可以把运算符重载函数定义成某个类的友元函数,称为友元运算符函数。 1. 友元运算符函数定义的语法形式 友元运算符函数的原型在类的内部声明格式如下: class X { //… friend 返回类型 operator运算符(形参表); //… } 在类外定义友元运算符函数的格式如下: 返回类型 operator运算符(形参表) { 函数体 } 5.2.3友元运算符函数 [例]用友员函数重载算术运算符 #include iostream.h class point { int x,y; public: point(int x1=0,int y1=0){ x=x1;y=y1;} friend point operator +(const point p1,const point p2); friend point operator ++(point p) { p.x++; p.y++; return p;} void print() { cout x y endl;} }; point operator+(const point p1,const point p2) { point p; p.x=p1.x+p2.x; p.y=p1.y+p2.y; return p; } void main() { point p1(10,10),p2(20,20); p1=p1+p2; p1
您可能关注的文档
- 社会统计学(卢淑华),第三单元.ppt
- 碎部测量.ppt
- 离散数学第19单元.ppt
- 离散系统分析.ppt
- 科学记数法a.ppt
- 科学记数法课件ppt新人教版七年级上.ppt
- 科学记数法课件ppt新人教版七年级上改.ppt
- 积分变换与微分方程.ppt
- 程序final.ppt
- 积分应用(一).ppt
- 2025年南昌县公安局招聘警务辅助人员26人考试备考试题及答案解析.docx
- 部编版四年级上册道德与法治期末测试卷及参考答案【研优卷】.docx
- 部编版四年级上册道德与法治期末测试卷及一套答案.docx
- 2025江西南昌市属国企专场(轨道集团)招聘部分岗位计划数调整考试备考试题及答案解析.docx
- 2025广西壮族自治区消防员招录工作办公室国家综合性消防救援队伍招录消防员400人考试备考试题及答案解析.docx
- 部编版四年级上册道德与法治期末测试卷及参考答案【实用】.docx
- 部编版四年级上册道德与法治期末测试卷精品(基础题).docx
- 2025年芜湖镜湖区编外聘用中学教师招聘25人考试备考试题及答案解析.docx
- 部编版四年级上册道德与法治期末测试卷及答案.docx
- 部编版四年级上册道德与法治期末测试卷及参考答案(名师推荐).docx
最近下载
- [中级注册安全工程师考试密押资料]安全生产管理模拟194.docx VIP
- 某光伏项目危险源辨识与风险评价清单.pdf VIP
- [中级注册安全工程师考试密押资料]安全生产管理模拟197.pdf VIP
- 品管圈PDCA优秀案例-提高保护性约束使用的规范率医院品质管理成果汇报.pptx
- [中级注册安全工程师考试密押资料]其他安全(不包括消防安全)技术模拟7.docx VIP
- (优质医学)汇报用提高约束具规范使用率.ppt
- 英文版公司章程ARTICLES OF ASSOCIATION OF.docx VIP
- 2025年海南省中考物理试题卷(含答案解析).docx
- 公司章程英文版 Company Articles of Association.doc VIP
- 室内外照明线路敷设要点.ppt VIP
文档评论(0)