c++教程 运算符重载笔记(一)

c++教程 运算符重载笔记(一)

ID:9234964

大小:171.43 KB

页数:16页

时间:2018-04-24

c++教程 运算符重载笔记(一)_第1页
c++教程 运算符重载笔记(一)_第2页
c++教程 运算符重载笔记(一)_第3页
c++教程 运算符重载笔记(一)_第4页
c++教程 运算符重载笔记(一)_第5页
资源描述:

《c++教程 运算符重载笔记(一)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第四讲运算符重载运算符重载,就是对已有的运算符进行重新定义,赋予其另一个功能,以适应不同的数据类型。支持运算符重载和定义新运算符的语言:Ruby、Haskell、PostgreSQL的SQL方言支持运算符重载的语言:Ada、C++、C#、D、Perl、Python、Pascal、VisualBasic等不支持运算符重载的语言:C、Java、Objective-C、Delphi等一、运算符重载概述运算符也可以重载,即一个名字的运算符可以代表不同的运算操作。例如,程序中可以利用“+”对整型数、单精度、双精度以及指针进行加法运算等,如:

2、inta=3+10;//对整型数加doubled=4.9+4.8;//对双精度加intar[10];int*p=ar;p=p+1;//对指针加现在,若有一个自定义的复数类型Complex,有两个复数对象c1=(6+3i),c2=(3.4-0.9i),能否直接使用“+”进行两个复数对象相加,即有如下表达式?c1+c2答案是:可以,但程序员必须对“+”重载。二、重载运算符的实现重载的运算符函数语法为:<返回值类型>operator#(<形参列表>){用户实现的相关操作在这里}Operator为关键字,专门用于定义重载的运算符函数,#代

3、表要被重载的运算符。例如:Complexoperator+(Complex&a,Complex&b){相关的操作在这里实现;}此函数可以用来实现对两个Complex对象进行相加。C++中,重载运算符可以采用两种方式实现:A、将重载的运算符函数作为自定义类的成员函数;B、将运算符函数作为全局函数,即,不作为任何类的成员。但是,若运算符函数需要访问操作数对象的私有成员,则必须将运算符声明成操作对象类型的友元。因此,常常将这种方式称为全局(友元)函数形式。1、作为成员函数重载运算符作为成员函数重载时,运算符函数内的参数个数一般比运算符操

4、作数个数少一个。因为,对于类的非静态成员函数,第一个参数默认为指向因意外弄得对象的this指针(例外:++,--作为后置时,有一个参数)。A、双目运算符重载作为非static成员函数重载双目运算符,只需要给出运算符右边操作数,左操作数为隐含的this指针,其函数原型声明为:<返回值类型>Operator#(<类型>);函数定义形式为:<返回值类型>[<类名::>]operator#(<类型><参数>){相关操作……}#为被重载的运算符,“<类型><参数>”用来描述运算符右边的操作数,运算符重载函数的定义可以放在类体内也可以同其他成

5、员函数一样放到类体外。综合实例:使用成员函数来重载operator+-运算符。/************************************************************************copyright(C),2015-2020,TanZhouTech.Co.,Ltd.FileName:Complexam.cppAuthor:VicoVersion:1.0Date:2015年月日Description://模块描述Version://版本信息FunctionList://主要函数及其功能1.

6、_tmain2.FuctionTproHistory://历史修改记录

7、{public:Complex(){rpart=ipart=0.0;}Complex(doublerp,doubleip){rpart=rp;ipart=ip;}//重载运算符+Complexoperator+(constComplex&c){Complextemp(rpart+c.rpart,ipart+c.ipart);returntemp;}//重载运算符-Complexoperator-(constComplex&c);//输出复数voiddisp_complex(){cout<<"("<

8、t<<"i)"<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。