第十八章运算符重载.PPT

上传人:国*** 文档编号:788283 上传时间:2018-11-01 格式:PPT 页数:105 大小:255KB
下载 相关 举报
第十八章运算符重载.PPT_第1页
第1页 / 共105页
第十八章运算符重载.PPT_第2页
第2页 / 共105页
第十八章运算符重载.PPT_第3页
第3页 / 共105页
第十八章运算符重载.PPT_第4页
第4页 / 共105页
第十八章运算符重载.PPT_第5页
第5页 / 共105页
点击查看更多>>
资源描述

1、第十八章 运算符重载1本章主要内容l 运算符重载的需要性l 重载运算符作友元函数l 运算符作成员函数l 增量运算符重载l 转换运算符重载l 赋值运算符重载2 C+认为用户定义的数据类型就像基本数据类型 int和 char一样有效。运算符 (如 +, -, *, /)是为基本数据类型定义的,为什么不允许使之适用于用户定义类型呢 ?例如: class A public: A(int x) a=x; / ; A a(5), b(10), c; c=a+b; /类对象也应能运算 运算符重载可以改进可读性,但不是非有不可。 3 多态性的实现: 函数重载 虚函数 运算符重载 在基本类型上,系统提供了许多预

2、定义的运算符(如 +、 -、 *、 /)。4问题举例 复数的运算class complex /复数类声明public: complex(double r=0.0,double i=0.0)real=r;imag=i;void display(); /显示复数的值private: double real;double imag; 5 用 “+”、 “-”能够实现复数的加减运算吗? 实现复数加减运算的方法 重载 “+”、 “-”运算符 必要性 C+中预定义的运算符其运算对象只能是基本数据类型,而不适用于用户自定义类型(如类)。 运算符重载可提高程序的可读性。6下列例子计算应付给的人民币,分别用了成

3、员函数和运算符成员函数两种方法 class RMBpublic:RMB(double d)yuan=d; jf=(d-yuan)/100; RMB interest(double rate); /计算利息 RMB add(rmb d); /人民币加 RMB operator + (RMB d) /人民币加的运算符重载 return RMB(yuan+d.yuan+(jf+d.jf)/100;RMB operator * (double rate)return RMB(yuan+jf/100)*rate);private:unsigned int yuan; / 元unsigned int jf

4、; / 角分; 7RMB RMB:interest(double rate)return RMB(yuan+jf)/100.0) * rate);RMB RMB:add(RMB d)return RMB(yuan+d.yuan+jf/100.0+d.jf/100.0);/以下是计算应付人民币的两个版本RMB expense1(RMB principle,double rate)RMB interest = principle.interest(rate);return principle.add(interest);RMB expense2(RMB principle,double rate)

5、RMB interest = principle * rate;return principle + interest; 8 void main() RMB x = 10000.0; double yrate = 0.035; expense1(x,yrate).display(); expense2(x,yrate).display(); 运行结果为: 20350 10350 expense()的两个版本都可以计算应付人民币,运行结果相同。 expense2()可读性更好一点,它符合我们计算用 +, *运算符的习惯。 如果不定义运算符重载,则 expense2()中 principal * rate和principal+interest是非法的。因为参加运算的是类对象而不是浮点值。 9运算符重载的实质 运算符重载是对已有的运算符赋予多重含义。 实现机制 运算符重载的实质就是函数重载:每个运算符对应各自的运算符函数,根据操作数的不同调用不同的同名函数。 将指定的 运算表达式 转化为对 运算符函数 的调用, 运算对象 转化为运算符函数的 实参 。10

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。