第四章 多态性C++面向对象程序设计.ppt

  1. 1、本文档共88页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

yurixiang1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档