电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

《第7章运算符重载3(讲义)》-精选课件(公开PPT)

  • 资源ID:136367345       资源大小:2.33MB        全文页数:121页
  • 资源格式: PPT        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

《第7章运算符重载3(讲义)》-精选课件(公开PPT)

第7章 运算符重载,第2页 共125页,第7章 运算符重载,运算符重载是面向对象程序设计的重要特征。运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据导致不同的行为。C+中经重载后的运算符能直接对用户自定义的数据进行操作运算,这就是C+语言中的运算符重载所提供的功能。,第3页 共125页,第7章 运算符重载,7.1 运算符重载概述 7.2 运算符重载函数的两种形式 7.3几个常用运算符的重载 7.4 类型转换 7.5 本章小结,第4页 共125页,7.1 运算符重载概述,7.1.1 运算符重载的好处 7.1.2 运算符重载的规则,第5页 共125页,7.1.1 运算符重载的好处,C+预定义的运算符只能对基本类型的数据进行操作,不能用于自定义数据类型的运算。 对于用户自定义的数据类型往往需要有类似的运算操作,客观上需要定义适用用户自定义数据类型的有关运算。,第6页 共125页,7.1.1 运算符重载的好处,定义一个简化的复数类complex: class complex public: double real,imag; complex(double r=0,double i=0) real=r; imag=i; ;,第7页 共125页,7.1.1 运算符重载的好处,若要把类complex的两个对象com1和com2加在一起,下面的语句是不能实现的: void main( ) complex com1(1.1,2.2),com2(3.3,4.4),total; total=com1+com2; /错误 / ,第8页 共125页,7.1.1 运算符重载的好处,若要将上述类complex的两个对象相加,只要编写一个运算符函数operator+( ),如下所示: complex operator+(complex om1,complex om2) complex temp; temp.real=om1.real+om2.real; temp.imag=om1.imag+om2.imag; return temp; 我们就能方便地使用语句: total=com1+com2; 将类complex的两个对象com1和com2相加。,第9页 共125页,表7-1 运算符重载函数,第10页 共125页,7.1.2 运算符重载的规则,运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造完成的。一般来讲,重载的功能应当与原有的功能相类似。 只能重载C+预定义中已有的运算符,不可自己“创造”新的运算符进行重载。,第11页 共125页,7.1.2 运算符重载的规则,以下运算符不可重载:,第12页 共125页,7.1.2 运算符重载的规则,不能改变运算符的操作个数。 不能改变运算符的原有优先级。 不能改变运算符的原有结合特性。 不能改变运算符对预定义类型数据的操作方式。重载运算符时,必须至少有一个自定义类型的数据作为操作数。,第13页 共125页,7.2 运算符重载函数的两种形式,运算符重载是通过创建运算符重载函数来实现的,运算符重载函数定义了重载的运算符将要进行的操作。 运算符重载函数一般采用以下两种形式: 成员运算符函数 友元运算符函数,第14页 共125页,7.2 运算符重载函数的两种形式,7.2.1 友元运算符函数 7.2.2 成员运算符函数 7.2.3 成员运算符函数与友元运算符函数的比较,第15页 共125页,7.2.1 友元运算符函数,在C+中,可以把运算符重载函数定义成某个类的友元函数,称为友元运算符函数。 当运算符重载为友元函数时可以自由地访问类的所有成员。运算符重载为友元函数时,运算符所需要的操作数都需要通过函数的形参来传递,在参数表中参数从左至右的顺序就是运算符操作数的顺序。,第16页 共125页,7.2.1 友元运算符函数,友元运算符函数定义的语法形式 双目运算符重载 单目运算符重载,第17页 共125页,友元运算符函数定义的语法形式,友元运算符函数的原型在类的内部声明格式如下:,class X / friend 返回类型 operator运算符(形参表); / ,第18页 共125页,友元运算符函数定义的语法形式,在类外定义友元运算符函数的格式如下:,返回类型 operator运算符(形参表) 函数体 ,第19页 共125页,双目运算符重载,当用友元函数重载双目运算符时,两个操作数都要传递给运算符函数。,第20页 共125页,例7.2 用友元运算符进行复数运算,两个复数a+bi和c+di进行加、减、乘、除的方法如下: 加法: (a+bi)+(c+di)=(a+c)+(b+d)i 减法:(a+bi)-(c+di)=(a-c)+(b-d)i 乘法:(a+bi)*(c+di)=(ac-bd)+(ad+bc)i 除法:(a+bi)/(c+di)=(a+bi)*(c-di)/c2+d2,第21页 共125页,例7.2 用友元运算符进行复数运算,#include class complex public: complex(double r=0.0,double i=0.0); void print( ); friend complex operator+(complex a,complex b); friend complex operator-(complex a,complex b); friend complex operator*(complex a,complex b); friend complex operator/(complex a,complex b); private: double real; double imag;,第22页 共125页,例7.2 用友元运算符进行复数运算,complex:complex(double r,double i) real=r; imag=i; complex operator+(complex a,complex b) complex temp; temp.real=a.real+b.real; temp.imag=a.imag+b.imag; return temp; ,第23页 共125页,例7.2 用友元运算符进行复数运算,complex operator-(complex a,complex b) complex temp; temp.real=a.real-b.real; temp.imag=a.imag-b.imag; return temp; ,第24页 共125页,例7.2 用友元运算符进行复数运算,complex operator*(complex a,complex b) complex temp; temp.real=a.real*b.real-a.imag*b.imag; temp.imag=a.real*b.imag+a.imag*b.real; return temp; complex operator/(complex a,complex b) complex temp; double t; t=1/(b.real*b.real+b.imag*b.imag); temp.real=(a.real*b.real+a.imag*b.imag)*t; temp.imag=(b.real*a.imag-a.real*b.imag)*t; return temp; ,第25页 共125页,例7.2 用友元运算符进行复数运算,void complex:print( ) cout0)cout<<"+" if(imag!=0)cout<<imag<<"in" void main( ) complex A1(2.3,4.6),A2(3.6,2.8),A3,A4,A5,A6; A3=A1+A2; A4=A1-A2; A5=A1*A2; A6=A1/A2; A1.print( ); A2.print( ); A3.print( ); A4.print( ); A5.print( ); A6.print( ); ,第26页 共125页,说明,主函数中的 A3=A1+A2; A4=A1-A2;A5=A1*A2; A6=A1/A2; 在执行时将被解释为: A3=operator+(A1,A2); A4=operator-(A1,A2); A5=operator*(A1,A2); A6=operator/(A1,A2);,第27页 共125页,说明,一般而言,如果在类X中采用友元函数重载双目运算符,而aa和bb是类X的两个对象,则以下两种函数调用方法是等价的: aa bb; / 隐式调用 operator (aa,bb); / 显式调用,第28页 共125页,单目运算符重载,用友元函数重载单目运算符时,需要一个显式的操作数。,第29页 共125页,例7.3 用友元函数重载单目运算符“-”,#include class AB public: AB(int x=0,int y=0) a=x;b=y; friend AB operator-(AB obj); void print( ); private: int a,b; ;,第30页 共125页,例7.3 用友元函数重载单目运算符“-”,AB operator-(AB obj) obj.a=-obj.a; obj.b=-obj.b; return obj; void AB:print( ) cout<<"a="<<a<<" b="<<b<<endl; void main( ) AB ob1(50,60),ob2; ob1.print( ); ob2=-ob1; ob2.print( ); ,第31页 共125页,例7.4 使用友元函数重载“+”, “-”时有问题,#include class coord public: coord(int i=0,int j=0); void print( ); friend coord operator+(coord op); private: int x,y; ; coord:coord(int i,int j) x=i;y=j;,第32页 共125页,例7.4 使用友元函数重载“+”, “-”时有问题,void coord:print( ) cout<<"x: "<<x<<", y: "<<y<<endl; coord operator+(coord op) +op.x; +op.y; return op; void main( ) coord ob(10,20); ob.print( ); operator+(ob); ob.print( ); +ob; ob.print( ); ,第33页 共125页,例7.5 使用引用参数重写例7.4,#include class coord public: coord(int i=0,int j=0); void print( ); friend coord operator+(coord ,第34页 共125页,例7.5 使用引用参数重写例7.4,void coord:print( ) cout<<"x: "<<x<<", y: "<<y<<endl; coord operator+(coord ,第35页 共125页,说明,一般而言,如果在类X中采用友元函数重载单目运算符,而aa是类X的对象,则以下两种函数调用方法是等价的: aa; / 隐式调用 operator(aa); / 显式调用 注意:关于友元函数重载单目运算符后缀方式的

注意事项

本文(《第7章运算符重载3(讲义)》-精选课件(公开PPT))为本站会员(zhuma****mei1)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.