第10 章 运算符重载PPT课件

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

u{ sing namespace std;
调用方式直观、不烦琐
cinlaCt smosmaCiponlm(e)xplce;x
,//定使义人感Co到m很p方lex便类
{}{ pCcccccr3ooueo..CCr=uiubtmmueoolttira<<mmpacnl<<l:cg=ppec1″″=xrll;+eecceixxmc21a1((c==lad+(2)″″3go{c;;;,+ur24eccbc.)ra21l2,ecel...=dda2irm0iil(,ss;/d5;/ppaio调,m-gllu1aa;ab用0yygl)((e=,复c))0i;;3);数;}{/////r输输/相e定a出出l加义=rcc函;/321i//m个构的的/数定a复造值值g义=数函i构;}对数造象重函载数
{ return 0;
//声明复数相加函数
} cvoouitd<d<i″sp(″la<y<(r)e;al<<″,″<<imag<<″/i/)声″<明<输end出l;函数
}private:
double real;
//实部
double imag;
//虚部
};
为什么运算符可以重载?
❖运算符的运算特性
2 * (A+ B ) / ( C - D )
vcooiCduotC<mo<pm″lpecxl1e+oxcp∷2e=rd″aist;pocrl3a+.yd((iCs)polmayp(le)x;//&定//c义输2)输出; 出c3的函值数
{ return 0;
//声明复数相加函数
} cvoouitd<d<i″sp(″la<y<(r)e;al<<″,″<<imag<<″/i/)声″<明<输end出l;函数
用于类对象的运算符一般必须重载,但有两个例外,运 算符“=”和“&”不必用户重载。
应当使重载运算符的功能类似于该运算符作用于标准类 型数据时所实现的功能。
❖使用1标. 识运符用或类操机作制符命名函数时,不同之处在于:以标识符 命名2的. 函重数载可运以算有符任意个参数,而以操作符命名的函数只能 有一3个. 或保两持个运参算数符;程概序念员上不能定义新的操作符。 的一致性
例2: 通过运算符重载来实现复数相加
#Cionmclpuldeex<Cioosmtrpelaemx∷> operator+(Complex &c2)
重载不能改变运算符运算对象(即操作数)的个数。 重载不能改变运算符的优先级别。 重载不能改变运算符的结合性。
§ 重载运算符的规则-2
重载运算符的函数不能有默认的参数,否则就改变了运 算符参数的个数,与前面第(3)点矛盾。
重载的运算符必须和用户定义的自定义类型的对象一起 使用,其参数至少应有一个是类对象(或类对象的引用)。
}private:
double real;
//实部
double imag;
//虚部
};
§ 重载运算符的规则-1
C++不允许用户自己定义新的运算符,只能对已有的 C++运算符进行重载。
不能重载的运算符只有5个
❖. (成员访问运算符) ❖ * (成员指针访问运算符) ❖∷ (域运算符) ❖sizeof (长度运算符) ❖? : (条件运算符)
Div( Mult (2, Add ( A, B) ), Sub ( C, D ) )
❖❖语一由法个于o通变pC表e+过r体达a+t,对o运式r 他操/运算(o们作算p符e的符是r重a基的t一o载r础表个能样复* 实(语示嵌否,数2,义语现套也直运op是法的和接算er相的函a整用呢to同限数数加?r 的定+调的号(。,用A加“,当,B法+”将)操运来),操作算o实p作符一现er符只ato写是r -成函(C函数, D数的)) 调用表达对形象式的时运,算必须操在作操:作符之前冠以关键字 operator。
u{ sing namespace std;
调用方式不直观、太烦
cinlaCt smosmaCiponlm(e)xplce;x
//定义琐,Co使m人p感lex到类wenku.baidu.com不方便
{}v{ pCccccoccr3ooouieo..CCCdr=uuiubtmmueooottltcCira<<<mmmp1canol<<<l.:g=pppmcec″″″=oxrlll;peeeccceimxxxmcl211ae1((=+=plcxad+()″c″lo∷3goe{c2;;m,+uxr24=eccdb_c.p)″ra21li2a,lecesl;..e.d=ddpa2ixcrmd0iil(l,_3ss;ad5;(ppaa.icyo,dmd-gll2(u1aaid;)asb)0yy;(pglC)((e=l,ac))o0i;;3y)m;;(}{//p///)r输输//l;e/定/e/a调定x出出l/义=/&用义输rcc;/3c21i/复/输出2m个构的的/)定a;数出c复造值值g3义=相的函数函i构;}加值数对数造函象重函数载数
第10 章 运算符重载
信息学院信息技术教研室
整体概述
概况一
点击此处输入相关文本内容 点击此处输入相关文本内容
概况二
点击此处输入相关文本内容 点击此处输入相关文本内容
概况三
点击此处输入相关文本内容 点击此处输入相关文本内容
第 10 章 运算符重载
§ 导入
函数重载
❖构造函数重载 ❖普通成员函数重载 ❖一般函数重载
为什么需要运算符重载?
例:一个日期类对象加上若干天数,应该仍是日期 Date d1(2001,12,1); int s=10; 应能得到:2001/12/11 即运算: d1=d1+s; 是合理的 C++的语法问题:“+”运算的操作数是什么? “+”只定义了对内部数据类型int char(字符) float(double)
进行算术运算
例:字符串相加操作 char a[10]=“Hello “; char b[10]=“World”; char c[20]=a+b;
严重的语法问题: 1. 类型不一致; 2. a+b无意义 3. “+”不作串连接运

例1: 通过函数来实现复数相加
#Cionmclpuldeex<Ciosmtrpelaemx∷> complex_add(Complex &c2)
相关文档
最新文档