- 1、本文档共88页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章多态性C面向对象程序设计
教材:《C++面向对象程序设计》 李涛 主编 游洪跃 陈良银 李琳等编 高等教育出版社 2006年2月出版 本书内容 第1章 绪论 第2章 C++类和对象 第3章 继承 第4章 多态性 第5章 模板 第6章 C++常见问题 第7章 Visual C++编程基础 第8章 对话框、常用消息、菜单和工具条 第9章 单文档界面和多文档界面 第10章 图形设备接口 实验 (待安排) 4.1 多态性基本概念及其实现方式 多态性就是一个事物多种形态,就是同一符号或者名字在不同情况下具有不同解释的现象。 多态性有两种表现形式: 一种是不同的对象在收到相同的消息时,产生不同的动作; 另一种是同一指针所指向的对象或同一对象通过引用不同对象收到相同的消息却能产生不同的函数调用。 4.1.2 多态的两种实现方式 两种表现形式分别叫做:编译时多态和运行时多态。 编译时多态——也叫静态多态性,属于早期绑定,在编译时就实现了绑定,它是静态联编的; 运行时多态——也叫动态多态性,属于晚期绑定,在编译时还无法确定绑定对象,只有在运行时才能够实现绑定,它是动态联编的。 以下两种情况不是动态联编的: 1、在基类中未使用虚函数、纯虚函数。 2、在基类中使用了虚函数和纯虚函数,使用对象直接调用。这也不是动态联编的。 “绑定”——就是让函数调用与函数体产生关联。 在编译时就确定——叫“早期绑定”; 在程序运行时才确定——叫“晚期绑定”。 而C++的多态性在“早期绑定”和“晚期绑定”两方面都有体现。 4.2 虚函数 虚函数是在基类中使用了关键字virtual的成员函数。 1、虚函数定义在基类和派生类中,函数原型完全一致; 2、函数重载在同一个类中,或者都在类外定义,函数原型只有函数名相同,其他必定不完全相同。 4.2.1 虚函数的基本概念及其定义 主要通过例子程序说明其机制. 例4_1:利用对象分别调用不同的Show( )——正确调用了特定的Show( )函数。 sclass4_1_student.h C++例题程序\第4章\s4_1\sclass4_1_student.h sclass4_1_student.cpp C++例题程序\第4章\s4_1\sclass4_1_student.cpp smain4_1.cpp C++例题程序\第4章\s4_1\smain4_1.cpp 在main( )中通过“对象.成员函数”的形式调用show( ),分别调用了对象自己的show( )。 下面通过基类指针来调用,会有什么结果啦? 例4_2:利用基类的指针调用不同的Show( )。 smain4_2.cpp C++例题程序\第4章\s4_2\smain4_2.cpp sclass4_2_student.h C++例题程序\第4章\s4_2\sclass4_2_student.h sclass4_2_student.cpp C++例题程序\第4章\s4_2\sclass4_2_student.cpp CPerson oCPerson( 德华刘,男 ); CPerson *pCPerson;//基类指针 CStudent oCStudent(学友张,男 ); pCPerson = oCPerson; //显示oCPerson对象的姓名和性别 pCPerson-Show( ); pCPerson = oCStudent; //显示oCStudent对象的姓名、性别和学号 pCPerson-Show( ); 无论让基类的指针指向基类对象还是派生类对象,系统都无法调用派生类对象oCStudent的Show( )函数。 实际调用的都是基类的Show( )成员函数。 通过基类的引用,引用派生类对象,会有什么结果啦? 例4_3:利用基类的引用作为参数,调用不同的Show( ),依然未达到目的。 smain4_3.cpp C++例题程序\第4章\s4_3\smain4_3.cpp sclass4_3_student.h C++例题程序\第4章\s4_3\sclass4_3_student.h sclass4_3_student.cpp C++例题程序\第4章\s4_3\sclass4_3_student.cpp void TestReference( const CPerson rCPerson ) { rCPerson.Show( ); } CPerson oCPerson( 德华刘,男 ); //构造一个CPerson的对象 CStudent oCStudent( 2005
您可能关注的文档
- 庫存類收貨_檢驗作業.ppt
- 第六课 让剪影动起来.ppt
- 第十一届全国无机氟化物行业年会论文集.doc
- 第十一章 一次函数教材分析.ppt
- 第十一章 主成分分析与因子分析.ppt
- 第十一章 渠道价格管理.ppt
- 第十一章 计算机审计与信息系统审计.ppt
- 第十一章 通货膨胀与通货紧缩习题与答案.doc
- 第十一章_语义网格在智能交通系统中的应用.doc
- 第十一章线性回归分析.ppt
- 景福集团有限公司环境、社会及管治报告2022.pdf
- 义合控股有限公司2021、22 环境、社会及管治报告.pdf
- 银涛控股有限公司环境、社会及管治报告2022.pdf
- 同得仕(集团)有限公司二零二二年环境、社会及管治报告.pdf
- 波司登国际控股有限公司环境、社会及管治报告2021、22.pdf
- 标准发展集团有限公司2022年环境、社会及管治报告.pdf
- 煜荣集团控股有限公司2021、22 环境、社会及管治报告.pdf
- 万华媒体集团有限公司环境、社会及管治报告2021、22.pdf
- 杭品生活科技股份有限公司二零二二年环境、社会及管治报告.pdf
- 综合环保集团有限公司环境、社会及管治报告2022.pdf
文档评论(0)