- 1、本文档共43页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C多态性模版课件
第5章 多态性 主要内容包括: 1. 多态性一些基本概念 2. 函数重载 3. 运算符重载 4. 静态联编中隐含的问题 5. 虚函数(声明及使用) 6. 纯虚函数及抽象类 7. 几个例子 基本概念 多态: 不同对象收到相同的消息时,产生不同的响应。 通俗地说: 同一个函数名具有不同的实现(如函数重载) 同一个运算符具有不同的功能(如运算符重载) C++支持两种多态性: 编译时的多态性:静态联编--重载 运行时的多态性:动态联编--继承和虚函数 多态性的好处 实现了更高级、更自然的抽象 进一步减少了信息冗余 提高了程序的可重用性、可扩充性和可维护性 5.1 重 载 “重载”是面向对象程序设计的基本特点之一; “重载”类似于自然语言中的“一词多义”; 在进行面向对象的程序设计时使用两种形式的重载: 函数重载:“同一接口,多种方法” 运算符重载 重载(Overloading) 函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字; 5.1.2 运算符重载 运算符重载是指同一个运算符可以施加于不同类型的操作数上面。 例如:11/4=2 和 11.0/4.0=2.75 这里运算符“/”的意义不同。 对于重载的运算符,也是在编译时,根据被操作数的类型,决定使用该运算符的哪种语义。 运算符重载 目的 使运算符已有功能针对新数据类型的需要而进行改进。 例如: “+”号在数值运算中是两个数的相加,但是在字符串中表示为两个字符串的连接。 “+”号应用在复数运算上 运算符重载的语法 C++语言中运算符重载实际上是通过定义重载的运算符成员函数或友元函数来完成的。 通常把重载运算符的成员函数或友元函数,统称为运算符函数。 运算符重载成员函数举例 Complex c1(20,10),c2(5,4),c3; c3=c1-c2; coutc3=c1-c2=; c3.display(); c3=c1+c2; coutc3=c1+c2=; c3.display(); 单目运算符重载(++、--、!、~、-(负号)) 前置单目(++i),参数表为空 void operator ++(); 后置单目(++、--),参数表中有一个整型形参 void operator ++(int); 在这种情况下,当前对象(即调用该运算符函数的对象)作为该运算符唯一的操作数。如下调用(myX为X的对象): ++myX myX.operator++() myX++ myXoperator++(0) 运算符重载成员函数的形参(二) 二元(二目)运算符重载 有一个参数。此时当前对象作为该运算符的左操作数,参数作为右操作数。 如前例: 复数对象c1,c2,c3有操作 c3=c1+c2 , 等价于 c3=c1.operator+(c2) 运算符重载为类的友元函数 class X{ friend 函数返回值类型 operator 运算符 (形参表){ …} } 在函数原型加关键字friend。 由于是友元函数,因此在类的公有段和私有段说明此函数的效果相同。 用友元函数重载运算符时参数表中参数个数,比用成员函数重载运算符时参数表中的参数个数多一个。 运算符重载为类的友元函数 Complex c1(20,10),c2(5,4),c3; c3=c1+c2; coutc3=c1+c2=; c3.display(); 运算符重载友元函数形参 1、 单目运算符 前置单目:一个形参 形参为类类型,是此运算符的操作数 后置单目:两个形参 一形参为类类型,是此运算符的操作数;另一形参为int 2、 二元运算符: 两个参数,分别为左右操作数 赋值运算符重载 赋值运算符是双目运算符 可以使用缺省的赋值运算符实现类的赋值 如:Complex c1(20,10),c2; c2=c1 表示将c1的数据成员逐个赋给c2的对应数据成员,即 c2.real=20; c2.imag=10; 对运算符重载的限制 C++语言对运算符重载规定了下述一些限制: (1) 只能重载C++语言中已有运算符; (2) · ,* ,∷ ,?:四个运算符不能重载;
您可能关注的文档
- 2012考研数学高分必备宝典海文考研大礼包.doc
- 2012银行业从业人员资格考试个人理财模拟22(含答案解析试题).doc
- 2012银行业从业人员资格考试个人理财模拟24(含答案解析试题).doc
- 2012高一英语教案:Unit11 Lesson 2 The Paparazzi第一课时(北师大版必修4)( 2013高考).doc
- 2012高考理科数学讲析练学案第1章 集合与函数概念第2讲 函数与映射的概念.doc
- 2012高考化学第一轮复习 第13单元 烃课件 大纲人教版.ppt
- 20130904辰溪商业房产调研报告.doc
- 2013北师大版高一历史必修1电子题库 第一单元 单元检测评估 Word版含答案( 2013高考).doc
- 2013工业企业财务制度实施模板.doc
- 2013全国各地高考化学试题详解及评点15套).doc
文档评论(0)