- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++程序设计 连卫民 主编 第11章 类多态的程序设计 本章主要内容: 11.1 类多态概述 11.2 函数重载(重点) 11.3 运算符重载(重点) 11.4 静态联编和动态联编(重点) 11.5 虚函数(重点) 11.6 纯虚函数和抽象类 11.7 上机实训 本章教学目标: 了解在C++程序设计中多态性的两种不同体现 熟悉虚函数和抽象类的引入环境以及C++多态性的设计思想 掌握函数重载和运算符重载的原则和方法以及虚函数和抽象类在程序中的设计方法和步骤 11.1 类多态概述 11.1.1 类多态的概念 多态性是面向对象程序设计的重要特征之一。面向对象程序设计的特征包括:抽象性、封装性、继承性和多态性,其中抽象是核心,封装是基础,继承是关键,多态是补充。多态一般存在于继承的环境中。 所谓多态性是指当不同的对象收到相同的消息时,产生不同的动作。这是面向对象程序设计的重要特征。如果一个语言只支持类而不支持多态是不能被称为面向对象语言的,只能说是基于对象的,如Ada、VB就属于此类。C++语言是支持多态的,利用多态性技术,可以调用同名的函数,实现完全不同的功能。 11.1 类多态概述 11.1.2 类多态的分类 从系统实现的角度看,在C++中有两种多态性:静态多态性和动态多态性。 静态多态性是指在程序编译时系统就确定了要调用的函数。所以静态多态性也称为编译时的多态性,它是通过函数的重载和运算符的重载实现的。 动态多态性也称为运行时的多态性,它是指在程序执行前,系统无法根据函数名和参数来确定该调用哪一个函数,必须在程序执行过程中,根据执行的具体情况来动态地确定要调用的函数。它是通过类的继承关系和虚函数的动态联编实现的,目的是建立一种通用的程序。 11.2 函数重载 函数重载是指同一个函数名对应着多个不同的函数实现,即在C++中可以定义和使用同名的多个函数,它属于静态多态性。 本节主要介绍函数重载的两种类型: 函数参数类型重载 函数参数个数重载 11.2.1 函数参数类型重载 函数重载又称为函数的多态性,是指同一个函数名对应着多个不同的函数。所谓“不同”是指这些函数的形参表必须互不相同,或者是形参的个数不同,或者是形参的类型不同,或者是两者都不相同,否则将无法实现函数重载。 【例11-1】重载函数Cadd。函数Cadd有两个功能,如果它的两个参数是char型的,那么函数Cadd将两者连接起来输出,如果它的两个参数的类型是double型的,那么函数Cadd将输出两者的和。 程序代码如下: #includeiostream.h void Cadd(char *x,char *y) { cout连接后的字符串是:xyendl; } void Cadd(double x,double y) { cout两数的和是:x+yendl; } void main() { Cadd(good,morning); Cadd(5.6,7.3); } 11.2 函数重载 11.2.2 函数参数个数重载 函数参数个数重载是指函数的参数个数不同,对函数进行重载。 【例11-2】 求若干个参数当中的最大值,根据参数个数的不同调用不同的max()函数。 分析:由于所求参数个数不确定,我们定义函数max()的参数个数也为可变值,若两次定义函数max(),分别包含两个参数x、y和三个参数x、y、z,可通过参数个数的不同调用实现个数不定的数值比较。 11.2 函数重载 程序代码如下: #includeiostream.h float max(float x,float y) // 求两个实数的最大值 { if(xy) return x; else return y; } float max(float x,float y,float z) // 求三个实数的最大值 { float b=max(x,y); return max(b,z); } void main() { coutmax(1,2)endl; coutmax(1,2,3); } 11.3 运算符重载 类的多态性还可以用运算符的重载实现,而运算符重载是面向对象程序设计的重要特征。运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据导致不同的行为。 本节主要介绍运算符重载引入的目的、运算符重载的使用方法和应用实例。 11.3 运算符重载 11.3.1 引入目的 在C++中预定义的运算符的操作对象只能是基本数据类型。实际上,对于很多用户自定义类型,也需要有类似的运算操作。 运算符是系统预先定义好的一些函数名称
文档评论(0)