- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象程序设计技术C课件第5章
《面向对象技术与Visual C++》--第5章 第5章 多态性 本章主要内容 多态性的概念和多态类型 联编 虚函数 抽象类 运算符重载 多态性的概念 多态性是指具有相似功能的不同函数使用同一个名称来实现,从而可以使用相同的调用方式来调用这些具有不同功能的同名函数的特性。 C++的多态性是指对同一条消息,被不同类型的对象接收将产生不同的行为。 多态性是实现“一种接口,多种方法”的技术。这里的“一种接口”是指相同函数名,而“多种方法”是指多种函数实现。 多态的类型 C++支持的多态可以分为四种类型: 重载多态 强制多态 包含多态 参数多态 联编 多态性的实现过程中,确定调用哪个同名函数的过程就是联编(binding),又称绑定。 联编是指计算机程序自身彼此关联的过程,也就是把一个标识符名和一个存储地址联系在一起的过程。 用面向对象的术语讲,就是把一条消息和一个对象的方法相结合的过程。 按照联编进行的阶段的不同,可以分为静态联编和动态联编,这两种联编过程分别对应着多态性的两种实现方式。 静态联编 在编译阶段完成的联编称为静态联编。 在编译过程中,编译系统可以根据类型匹配等特征来确定程序中调用操作与执行某个同名函数实现之间的关系,即确定某一个同名函数到底是要调用哪一段函数实现代码。 函数重载和运算符重载就是通过静态联编方式实现的编译时的多态的体现。 静态联编的优点是函数调用速度快、效率较高,缺点是编程不够灵活 动态联编 只有在运行程序时才能确定将要调用的函数。这种在运行阶段进行的联编称为动态联编。 动态联编的优点是提供了更好的编程灵活性、问题抽象性和程序易维护性,缺点是与静态联编相比,函数调用速度慢。 虚函数 虚函数是动态联编的基础。 虚函数是非静态的成员函数,经过派生之后,虚函数在类族中可以实现运行时的多态性。 虚函数的声明 虚函数是一个在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数。声明虚函数的格式如下: 虚函数的使用 如果某类中的一个成员函数被说明为虚函数,这就意味着该成员函数在派生类中可能有不同的函数实现。 当使用对象指针或对象引用调用虚函数时,采用动态联编方式,即在运行时进行关联或绑定。 抽象类 抽象类是一种特殊的类,专门作为基类派生新类,自身无法实例化,也就是无法定义抽象类的对象,它为一类族提供统一的操作界面。 抽象类是为了抽象和设计的目的而建立的,可以说,建立抽象类,就是为了通过它多态地使用其中的成员函数。 抽象类处于类层次的上层,由它派生新类,然后再实例化。 纯虚函数 在C++中,有一个仅为该多态机制提供一个接口而没有任何实体定义的函数,被称为纯虚函数。 声明纯虚函数的一般格式如下: 抽象类 抽象类只能用作其他类的基类,不能建立抽象类对象。 抽象类不能用作参数类型、函数返回值类型或显式转换的类型,但可以说明指向抽象类的指针或引用,该指针或引用可以指向抽象类的派生类,进而实现多态性。 抽象类的主要作用是将有关的派生类组织在一个继承层次结构中,由抽象类为它们提供一个公共的根,相关的派生类就从这个根派生出来。 运算符重载 运算符重载就是赋予系统预定义的运算符多重含义,使同一个运算符作用于不同类型的数据导致不同的行为。 运算符重载的实质就是函数重载。 运算符重载使得系统预定义的运算符能作用于用户自定义类型的数据,进行类似运算。 运算符重载规则 C++的运算符除了少数几个之外,全部可以重载,而且只能重载已有的运算符,不可臆造新的运算符。 重载之后运算符的优先级和结合性都不会改变,并且要保持原运算符的语法结构。参数和返回值类型可以重新说明。 运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造。 运算符重载有两种方式:重载为类的成员函数和重载为类的友元函数。 当运算符重载为类的成员函数时,由于单目运算除了对象以外没有其它参数,因此重载“++”和“- -”运算符,不能区分是前缀操作还是后缀操作。C++约定,在参数表中放上一个整型参数,表示后缀运算符。 运算符重载为成员函数 运算符重载为类的成员函数的一般格式如下: 其中,operator是定义运算符重载函数的关键字。参数表中最多有一个形参。 运算符重载为友元函数 运算符重载为类的友元函数的一般格式如下: 其中,参数表最多有两个形参。 * * virtual 返回值类型 函数名(参数表); virtual 返回值类型 函数名(参数表)=0; 返回值类型 operator 运算符(参数表) { 函数体; } friend 返回值类型 operator 运算符(参数表) { 函数体; } * *
您可能关注的文档
- 市场营销学平时作业一.doc
- 二维动画全流程培训计划大纲.pdf
- 2016年南开大学文学理论与文化研究 沈立岩 考博复试线 考博真题.pdf
- 2016年南开大学汉语语法学 王红旗 考博复试线 考博真题 考博参考书.pdf
- 2016年南开大学美国史 赵学功 考博复试线 考博真题 考博参考书.pdf
- 2016年南开大学现代汉字研究 孔祥卿 考博复试线 考博真题 考博参考书.pdf
- 2016年南开大学语言类型学 潘家荣 考博复试线 考博真题 考博参考书.pdf
- 2016年南开大学马克思主义与转型问题研究 陈弘 考博复试线 考博真题.pdf
- 2017北京邮电大学公共管理专业考研参考书、考研分数线、考研复习经验、考研辅导.pdf
- 2017北京邮电大学公共管理专业考研参考书、考研分数线、初试科目、考研辅导.pdf
- 数字化赋能乡村文化传承:2025年民俗文化博物馆建设可行性研究.docx
- 2025年生态旅游行业可持续发展战略研究报告.docx
- 2024考试天然气开采工三级题库与答案.docx
- (试题)天然气开采工三级题库及答案.docx
- 数字化赋能乡村文化,2025年民俗文化博物馆展示项目可行性论证.docx
- 2024年天然气开采工四级基础真题(含答案).docx
- 2023-2024年知识考核天然气开采工三级真题及答案.docx
- 锂矿资源开发与新能源汽车电池产业产业链优化研究报告.docx
- 数字化赋能乡村文化:2025年民俗博物馆展示创新模式研究.docx
- 共享经济视角下2025年城市自习室连锁扩张策略研究.docx
文档评论(0)