- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十二章运算符(operator)重载
第12章 运算符(operator)重载;1. 什么是运算符重载; 回答是否定的!
事实上,C++预定义的+、-、*、/、、=、、=、==、!=等一系列运算符的操作对象只能是基本数据类型,要让它们在用户自定义的数据类型(如:类)中也能类似使用,就需要对运算符赋予多种含义,这就是运算符重载。; 要理解运算符重载的含义,需要把握其中的 “变”与“不变”:
运算符不变,重载只能考虑C++现有的运算符,不允许用户定义新的运算符;
操作数的范围有了变化,不再局限于基本数据类型,可以扩展到用户自定义的类型(即用户定义的类),所实现的功能也可以由用户来定义;
运算符的使用形式不变,这样用户就能充分利用已有的知识、经验,见“符”猜义,节省了学习时间,提高了工作效率。
对此,我们形象地称之为“旧瓶装新酒”。;2. 运算符重载的基本方法; 计算表达式 9/2、9.0/2.0 分别被解释为调用函数:operator /(9,2)、 operator /(9.0,2.0)。
而 operator/(int ,int)和
operator /(double ,double) 两个函数是重载关系:函数名相同,参数类型不同,功能也不同,故两个表达式的计算结果不同。
事实上,C++中的每一个运算符都对应着一个或多个运算符函数,具体调用时,系统会根据实参的不同选择相应函数进行匹配。
如果用户想让某一个运算符也能在自己定义的类对象中使用,并实现一定的功能,且不影响该运算符原先的使用,就必须对它的运算符函数进行重载。 ;(2) 运算符函数重载的基本形式;3. 运算符重载的一般规则;C++允许重载的运算符:(续)
赋值运算符:=、+=、-=、*=、/=、%=、|=、=、^=、=、=
空间申请与释放运算符:new、delete、new[]、delete[]
其它运算符:( )(函数调用)、-(成员访问)、-*(成员指针访问)、,(逗号)、[ ](下标)
不能重载的运算符只有5个:
. (成员访问运算符) .* (成员指针访问运算符)
:: (域运算符) sizeof(长度运算符)
? :(条件运算符);重载不能改变运算符操作数的个数、优先级和结合性;
重载运算符的函数不能有默认的参数;
重载运算符必须和用户自定义类型的对象一起使用,其参数至少有一个是类对象或对象引用;
应当使重载运算符的功能类似于该运算符作用于标准数据类型时所实现的功能;
对于运算符:=(对象赋值)和 (取对象地址)的功能,系统已有默认定义,通常情况用户不需要重新定义。只有当对象间赋值涉及动态分配的指针,有可能出现多个对象的指针指向同一位置时,用户才需要自己重新定义。;4 . 用成员函数重载运算符;(3)运算符函数(即成员函数)的调用形式:;说明: (续)
如果重载的运算符函数允许有参数,那么对该参数的类型并没有严格限定,既可以是自定义类型,也可以是基本数据类型。函数返回值类型的确定也是类似的;
运算符函数的调用方式有两种,一种是普通成员函数的调用方式,另一种是表达式的形式,但后一种方式更直观,更常用;
为了能在类外使用运算符表达式,通常把运算符函数设为public权限;
=、()、[]、-等运算符只能用成员函数重载。
; 设 a+bi 和 c+di 是两个复数,则它们的四则运规则如下: ;5. 用友元函数重载运算符;友元函数声明、定义、调用格式如下:;(3)运算符函数(即友元函数)调用的基本形式:;说明: (续);本讲小结
文档评论(0)