欢迎来到天天文库
浏览记录
ID:9234964
大小:171.43 KB
页数:16页
时间:2018-04-24
《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://历史修改记录Vico2015/07/101.0buildthismoudle*************************************************************************///Complexam.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"#include"iostream"usingnamespacestd;classComplex
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)"<
8、t<<"i)"<
此文档下载收益归作者所有