网站大量收购闲置独家精品文档,联系QQ:2885784924

《C++程序设计教程》课件第5章.ppt

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

5.1概念

5.2重载函数作为成员函数的情况

5.3重载函数作为友元函数的情况

5.4重载赋值运算符

5.5拷贝构造函数

5.6类型的转换

本章要点

练习

5.1概念

5.1.1运算符的重载

运算符的重载是通过编写函数来实现的。函数名必须由

关键字operator和紧跟其后的被重载的运算符组成。例如,若

要重载“+”运算符,则重载函数名为operator+;要重载“[]”

运算符,则重载函数名为operator[]。

有了函数名,要编写一个函数来实现我们要求的运算,

还需要有函数类型和函数参数。运算符有双目运算符和单目

运算符。根据重载函数的性质来分,有重载函数是成员函数

和重载函数是友元函数两类。根据被重载的运算符来分,有

双目运算符重载和单目运算符重载。

5.1.2运算符重载的限制

C++中提供的运算符重载机制,使程序更清晰,提高了

可读性。但C++对运算符重载作了一些限制。

(1)在运算符重载时不能改变运算符原来的优先级、结

合性和操作个数等性质。

(2)运算符=、()、[]和-的重载函数,可作为类的成员

函数,但不可作为友元函数。

(3)运算符重载函数的参数不能为空。

(4)当参加运算的对象都属内部类型时不能重载。

(5)对可重载的运算符作了限制,如表5-1所示。

表5-1运算符表

可重载的运算符

+-*/%^|

+=-=*=/=%=^==|=

++!||

--==!===~,

-*-[]()newdelete===

不可重载的运算符

.*和-成员指针运算符.分量运算符::?:sizeof

5.2重载函数作为成员函数的情况

5.2.1双目运算符的重载

双目运算符也称二元运算符,如+、-等。当重载函数作

为类的成员函数时,该函数可以少用一个参数,因为成员函

数隐藏了第一个参数——this指针。利用this指针就可完成当

前对象与重载函数中给出的对象之间的操作。

重载“+”运算符的方法是:Typeoperator-(Types),意

为当出现当前类的对象与函数参数给出的对象进行“-”运算

时就调用该函数。返回类型对该函数是否被调用没有影响,

理论上返回类型可以是任何类型,但一般总是设定为操作对

象的类型。

对于上面的operator-函数调用,可理解为程序中有d1-d2

的操作,“-”的左边是当前类的对象,右边是type的对象,

于是条件满足,就调用该函数。实际上这是在编译时就决定

了的,编译器读到d1-d2就将它理解为:this.operator-(d2)。

双目运算符-的左边是当前对象,右边是函数参数给出的对象。

所作的运算是,当前对象“-”函数参数给出的对象。因此要

注意先后次序。

【例5-1】将两个人民币对象相减,再赋给另一人民币

对象。由于相减之后还要赋值,因此要求重载函数返回值。

#includeiostream

usingnamespacestd;

classRMB

{public:

RMB(){yuan=0;jf=0;}

RMB(int,int);

RMBoperator-(RMB);

voidDisplay()

{cout(yuan+jf/100.0)endl;}

protected:

intyuan;intjf;

};

RMB::RMB(intd,intc)

{yuan=d;jf=c;

while(j

文档评论(0)

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

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

1亿VIP精品文档

相关文档