程序设计基础导论-Read.PPT

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计基础导论-Read

第八章:多态性 罗月童 合肥工业大学,VCC研究室 导论 多态性(polymorphism):在程序中,同一符号或名字在不同情况下具有不同解释的现象称为多态性; C++中实现多态性的手段: 函数重载; 函数重定义 目 录 8.1 导 论 8.2 函数重载 8.3 运算符重载 8.4 虚函数 8.5 抽象类 8.6 多态性再讨论 8.2 函数重载(overloading) 注意事项: 返回值类型不能用于区分重载 不同参数传递方式不能用于区分重载 由typedef定义的类型不能用于区分重载 函数重载的二义性: 隐式类型转换引起的二义性 使用缺省参数引起的二义性 目 录 8.1 导 论 8.2 函数重载 8.3 运算符重载 8.4 虚函数 8.5 抽象类 8.6 多态性再讨论 8.3 运算符重载 8.3.1 导论 8.3.2 运算符函数 8.3.3 运算符重载 8.3.1 导 论 设计一个类表示复数,并实现加、减法运算 8.3.1 导 论 8.3.2 运算符函数 运算符、函数都是接受参数、返回结果; 运算符被视为函数的一种——运算符函数; A+B--? +(A,B) 注意: C++仅允许重载一元、二元运算符; C++不允许重载三元运算符; 8.3.2 运算符重载 一个问题… 类成员运算符重载 运算符重载的其他规则 重载运算符无法改变任何运算符的优先级和结合性质 重载运算符不可改变操作数的个数 重载运算符不可使用缺省参数 除了赋值运算符,重载运算符可由派生类继承; 运算符=、()、[]、-可作为类成员运算符,不可作为友元运算符; 提议:保存运算符的含义,不要滥用! 重载赋值运算符“=” 重载赋值运算符“=” 目 录 8.1 导 论 8.2 函数重载 8.3 运算符重载 8.4 虚函数 8.5 抽象类 8.6 多态性再讨论 8.4 虚函数 8.5.1 导 论 8.5.2 虚函数的一般事宜 8.5.3 静态邦定、动态邦定 8.5.1 导论 8.5.1 导论 8.5.2 虚函数的一般事宜 一般形式: virtual 返回值类型 函数名(形参列表) 仅在类申明中添加关键字,在类实现中不需要添加; 说明: 如果函数在基类中是虚函数,派生类重定义时,即使不加“virtual”,该函数仍然是虚函数; 8.5.3 静态邦定、动态邦定 静态邦定: 在编译阶段就能确定的邦定方式; 动态邦定: 在运行过程中才能确定的邦定方式; 类继承、指针、虚函数配合实现 一般将析构函数定义为虚函数 Why? 题 目 请写一个程序满足: 让用户输入10个图形(直线、或圆)的资料,然后将所有图形的资料显示出来; 直线的信息:起点、终点 圆 的 信 息:圆心、半径 程序改进: 其他要求不变,但图形种类增加了种类:椭圆 椭 圆 的 信 息:圆心、大径、小径 目 录 8.1 导 论 8.2 函数重载 8.3 运算符重载 8.4 虚函数 8.5 抽象类 8.6 多态性再讨论 8.5 抽象类 8.5 抽象类 纯虚函数: 形式… 派生类必须重定义; 抽象类: 包含纯虚函数的类被称为纯虚类; 不允许定义纯虚函数的对象; 纯虚类与抽象类的应用 目 录 8.1 导 论 8.2 函数重载 8.3 运算符重载 8.4 虚函数 8.5 抽象类 8.6 多态性再讨论 8.6 多态性 在程序中同一符号或表示在不同情况下具有不同解释的现象称为多态性; 编译是多态性(静态多态性): 函数重载实现 运行时多态性(动态多态性): 虚函数、指针 * * 变色眼镜 猫的瞳孔 人的性格… 虚函数 祖先类指针指向后代类对象 COMPLEX A, B, C; C = A.add(B); 运算符重载 友元运算符重载 为什么只有一个参数? I am a member; I am a member; I am a member; I am a member; I am a TEACHER; I am a STUDENT; 空函数体 派生类不重定义 Figure a;合法,但无意义 CStack *

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档