- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第13单元运算符重载
运算符重载的定义 运算符重载的实质是函数重载。事实上,C++语言中的每一个运算符对应着一个运算符函数,在实现过程中,把指定的运算表达式中的运算符转化为对运算符函数的调用,而表达式中的运算对象转化为运算符函数的实参,这个过程是在编译阶段完成的。例如: int a=1,b=2; a+b; 表达式“a+b”在编译前,将被解释为函数调用形式:operator+(a,b)。其中,operator是一个关键字,它与后面的“+”共同组成了该运算符函数的函数名。因此,可以将运算符重载看作是一种特殊的函数重载。运算符函数定义的一般格式如下: 返回类型说明符 operator 运算符符号(参数表) { 函数体 } 运算符重载的规则 简单地说,实现运算符重载即编写一个函数,该函数以“operator运算符号”为函数名,其定义了重载的运算符将要执行的操作。此外,函数的形参类型必须是自定义的类型。当使用该运算符对形参规定的数据类型进行运算时,就执行函数体中的操作,而覆盖了原运算符的功能。 C++中的运算符除了几个不能重载外,其他的都能重载,而且只能重载已有的运算符,不能自己另编。 重载以后运算符的优先级和结合性都不能改变,语法结构也不能改变,即单目运算符只能重载为单目运算符,多目运算符只能重载为多目运算符。 运算符重载以后的功能应与原有功能类似,含义必须清楚,不能有二义性。 类类型转换 类类型是指某个对象的数据类型为类,而不是标准的数据类型。在C++中,标准的数据类型与类类型之间的转换有三种方法。 通过构造函数转换:通过构造函数能将标准数据类型向类类型转换,但不能将类类型转换为标准类型。 通过类类型转换函数转换:要将类类型转换为标准数据类型时,需要采用显式类型转换机制,定义类类型转换函数。 通过运算符重载实现类型转换:可以实现标准类型的数据与类对象之间的运算。 【范例13-9】运算符重载转换运算符 C++中定义一个类的类型转换函数的形式为: 类名::operator type() { // return type类型的数据 //返回type类型的对象 } 范例在类中重载了一个类型转换函数int(),该函数实现输出并返回类类型值 本章主要介绍了运算符重载的相关内容。从运算符重载的定义和特点着手,通过一个具体的范例介绍运算符重载的优点,接着简要说明了运算符重载的规则。同时,重点讲解了两种形式的运算符重载:运算符重载为成员函数和运算符重载为友元函数。针对每一种重载方式,都通过一个范例介绍了双目运算符的重载和单目运算符的重载。此外,针对几种特殊运算符,本章通过实例讲解了赋值运算符、下标运算符等重载的实现。最后,就C++面向对象程序设计的基础概念和特征做了简要的概括。 习题 4.设计一个程序,重载四则运算符,实现复数的算术运算。 【解答】该试题主要考查算术运算符的重载。复数由实部和虚部构造,因此可以定义一个复数类,然后再在类中重载复数四则运算的运算符。具体的说,可以定义类complex,其中将四则运算符“+”、“-”、“×”和“/”都重载为类的成员函数,重载后的四则运算符能够实现复数的四则运算。同时声明一个友元函数用于输出运算结果。在主函数main()中创建三个对象,其中两个对象进行四则运算。 1-* 融智技术学院 融智技术学院 第13章 运算符重载 杨章伟 e-mail:yang505412@163.com 课程内容安排 运算符重载简介 运算符重载的形式 特殊运算符的重载 类类型转换 小结 习题 运算符重载简介 第12章介绍了多态的实现技术,主要包括函数的重载和虚函数。事实上,本章介绍的运算符重载也是多态性实现的一个重要手段。运算符重载实现的是编译时的多态,即静态多态性。C++预定义的运算符只是对基本数据类型进行操作,而对于自定义的数据类型比如类,却没有类似的操作。为了实现对自定义类型的操作,就必须自己编写程序来说明某个运算符作用在这些数据类型上时,应该完成怎样的操作,这就要引入运算符重载的概念。 简单地说,运算符重载是实现编译时多态性的另外一种形式。运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时,实现不同类型的行为。 运算符重载的形式 运算符的重载形式有两种:一种是重载为类的成员函数,一种是重载为类的友元函数。对于每一种重载形式,由于运算符的不同,都可以将其主要分为双目运算符和单目运算符的实现。 重载为类的成员函数 : 双目运算符重载为成员函数 单目运算符重载为成员函数 重载为类的友元函数 : 双目运算符重载为友元函数 单目运算符重载为友元函数 “++”和“--”的重载 前面范例中介绍了“++”和“--”的重载,但
文档评论(0)