已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第12章多态,杨章伟e-mail:yang505412,授课内容的安排,多态函数重负荷虚函数抽象类的总结练习题,多态简单地说,多态是“一个接口,多个实现”,是同一事物表现的多态。 按照面向对象的概念,多样性是当不同对象接收到相同的消息时会出现不同类别的动作。 多路复用提供了同一接口能以多种方式调用的机制,并且可以经由同一接口访问不同的函数。 具体而言,多态性是相同的函数名,作用会对不同的对象产生不同的操作。 多态性的作用,实际上多态性也是人类思维方式的直接模拟。 例如,一个对象经常具有用于确定两个最大值的行为,并且可以通过为不同数据类型写入许多不同名称的函数来实现这些行为,但是其功能实际上几乎相同。 在这种情况下,利用多态性的特征,可以用统一的标识完成这些功能。函数的重负荷、函数的重负荷在前一章中也叙述过,函数的重负荷也称为多态性函数,是实现编译时的多态性的形式之一。 程序可以使用相同的名称访问一系列相关函数,从而提高程序的灵活性。 重新加载函数时,函数名称相同,但函数具有不同的参数数量和数据类型,编译系统通过参数确定调用哪个同名函数。 在面向对象的编程中,函数的重负载由两种情况表示。 第一个是参数数量和类型不同的重载。 二是函数的参数完全相同,但属于不同的类。, 一般对象的指针之间没有联系,相互独立,不能混合。 但是,派生类从基类派生,因为它们之间有继承关系,所以基类和指向派生类的指针之间也有一定的联系。 不当的使用会产生一些问题。 定义、虚函数,虚函数的定义在基类中进行,必须在基类中定义为虚函数的成员函数声明为virtual。 基类的成员函数声明为虚函数后,可以在派生类中重新定义。 在派生类中重定义时,函数的原型(如返回类型、函数名称、参数的数量和类型以及参数顺序)必须与基类的原型完全匹配。 一般来说,虚函数定义的形式为virtual (参数表) 函数主体, 虚函数用于实际上在派生类中重定义的基类虚函数是函数重载的另一种形式,但是一般的函数重载必须具有不同的参数和参数类型,函数的返回类型也必须不同,但是重载虚函数如果参数的数量、参数类型和参数顺序不同,返回的类型必须是基类虚函数的原型,而返回的类型相同,则会显示错误消息。 如果函数名称相同,但参数数量、参数类型或参数顺序不同,则视为常规函数的重负载,并且虚函数的特性丢失。 纯虚函数。 如果基类不能实现对虚函数有意义的实现,则可以将其声明为纯虚函数。 纯虚函数的实现可以依赖于派生类,纯虚函数的作用是为派生类提供一致的接口。 一般而言,抽象类至少具有一个纯虚函数。 纯粹的虚函数是基类中说明的虚函数,因为该基类没有具体的操作内容,所以各派生类在重新定义时要求根据自己的需要来定义实际的操作内容。纯虚函数的典型定义格式是virtual (参数表)=0; 纯虚函数和通常的虚函数的定义的不同,通过在标记形式上加上“=0”,在基类中表示不定义该函数的函数体,该函数体在派生类中定义。 具有抽象类和纯虚函数的类称为抽象类。 抽象类是一个特殊类,是为抽象和设计目的而创建的,位于继承层次之上。 抽象类不能定义对象,但实际上一个类是抽象类,因此它们的构造函数可以被描述为受保护的访问控制权限。 抽象类的主要作用是将相关类组织到继承层次中,抽象类提供共同的根,从而导出相关子类。 抽象类代表一系列子类操作界面的共同含义,这些含义也会传递给子类。 通常,抽象类只需描述子类通用的操作接口,完整实现就会保留在子类中。 抽象类只能用作基类,其纯虚函数的实现给出派生类。 本章主要介绍了c面向对象编程的另一重要特征多态性。 简而言之,多态性是指用程序实现“一个接口、多个实现”或者属于不同类的多个函数能够共享一个函数名。 这与上述函数的重负荷不同,多态性要求函数的参数数、参数类型、返回类型等完全相同。 本章重点介绍多态性实现的两种形式:函数的重载和虚函数。 其中,函数重载主要实现了编译时的多态性,即静态多态性,虚函数主要实现了运行时的多态性,即动态多态性。 最后,本章通过具体实例,简要介绍了纯虚函数和抽象类的概念和应用。 总之,定义1.Rectangle类,具有长itsWidth、宽itsLength等属性,并重新加载该构造函数rectangle ()和Rectangle(intwidth、intlength )。 2 .定义哺乳动物Mammal类,导出狗Dog类,两者都定义spek ()成员函数,在基类中定义为虚函数,定义Dog类的对象,调用spek函数,观察执行结果。 3 .定义Shape抽象类,其中包含计算对象面积的GetArea ()函数和计算对象周围的GetPerim ()函数。 定义、练习、练习、4 .基类,然后导出类derived类,在基类中定义虚构函数,通过主程序将derived类的对象地址分配给base类的指针,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 资产收购服务合同范本
- 退款协议书还款协议书
- 通风空调劳务合同范本
- 道路事故解协议书范本
- 郊区全款购房合同范本
- 酒店管家服务合同范本
- 酒店预订合同范本模板
- 钢管架租赁易合同范本
- app报价合同范本
- 个人销售电梯协议书
- 《PMP项目管理》课件
- 混凝土泵车维护与保养课件
- 无人机在公安领域的应用
- 餐饮个人简历模板5篇大全
- 高血压的防治健康宣教
- 讴霭咨询-零售行业创新的洞察:策展式零售、叙事零售
- WB/T 1087-2018煤炭仓储设施设备配置及管理要求
- GB/T 2566-2010低煤阶煤的透光率测定方法
- GB/T 11032-2020交流无间隙金属氧化物避雷器
- 华为战略绩效PBC标准模板(华为)
- 矿井顶板灾害防治
评论
0/150
提交评论