C++面向对象运算符重载.ppt

C++面向对象运算符重载.ppt

ID:48058162

大小:1.78 MB

页数:29页

时间:2020-01-13

C++面向对象运算符重载.ppt_第1页
C++面向对象运算符重载.ppt_第2页
C++面向对象运算符重载.ppt_第3页
C++面向对象运算符重载.ppt_第4页
C++面向对象运算符重载.ppt_第5页
资源描述:

《C++面向对象运算符重载.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1四、操作符重载重载指的是相同的名称或符号具有不同的意义。例如:函数重载。操作符重载就是将程序设计语言本身提供操作符的功能进行重新定义,使该操作符运用于内部基本数据类型的语义和语法同样运用于类对象等用户自定义类型。既通过编写一些比较特殊的函数来重新定义(重载)这些操作符。21.基本操作符重载可以被重载的操作符不能被重载的操作符:作用域操作符::成员对象选择操作符.*类对象选择操作符.条件操作符?:基类对赋值操作符(=)重载不能被派生类继承。a=b.operator+(c);例如:如果需要在某个类C中重载操作符+,用来对2个该类

2、的对象进行加操作,并用另一个该类的对象存放结果。函数名为operator+,operator关键字返回类型为该类类型参数类型为该类类型的引用调用语法与普通成员函数相同:对象b的成员函数operator+被调用实参intmain()Ca,b,c;a=b+c;return0;}意义更清晰classC{public://…}Coperator+(constC&)const;classC{public:Coperator+(constC&);booloperator!();};4通常,重载一个二元操作符,操作符重载成员函数只有一个参数

3、。重载一个一元操作符,其成员函数不需要任何参数。只有一个参数无参数intmain()Ca,b,c;c=a+b;if(!c){}return0;}c=a.operator+(b);第二个操作数if(c.operator!()){}该操作数的成员函数operator!被调用第一个操作数a的成员函数operator+被调用classC{public:Coperator+(constC&);Coperator*(constC&);};booloperator!();Coperator%();注意:重载不能改变操作符的优先级和语法。二元

4、操作符总是出现在两个操作数之间。一元操作符总是出现在它的操作数之前。如果内建操作符是一元的,所有对它的重载仍是一元的。如果内建操作符是二元的,所有对它的重载仍是二元的。intmain()Ca,b,c,ans;ans=a+b*c;return0;}Xans=a+(b*c);if(!a){}2.复数类问题:实现一个复数类,完成以下操作:重载+、-、*和/,以支持复数的算术运算。设计一个write函数,输出一个复数。设计默认构造函数,将实部和虚部设为零。设计拥有一个参数的构造函数,将实部设为该函数,虚部设为零。设计拥有两个参数的构造

5、函数,并将两个参数分别赋给实部和虚部。7声明构造函数声明运算符重载函数9108定义一个复数对象(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)=(ac+bd)/(c2+d2)+[(bc-ad)/(c2+d2)]i内建的功能对于操作符,是在编译时,根据操作数的类型,决定使用该操作符的哪种语义。9109c1=7.7+5.5ic2=4.2+(-8.3i)c3=0.0+0.0i重载的功能(编译期

6、绑定)重载的功能(编译期绑定)重载的功能(编译期绑定)重载的功能(编译期绑定)c3=c1.operator+(c2);赋值运算?3.用顶层函数进行操作符重载一个被重载的操作符,就是一个用户自定义的函数,只不过它可以享有操作符语法所带来的便利。10成员函数顶层函数其中的[]、=、()、->必须以类成员函数的形式进行重载除内存管理操作符new、new[]、delete、delete[],一个以顶层函数形式被重载的操作符必须在它的参数表中包含一个类的对象,以便让编译器分辨出操作符是内建的还是用户自定义的。有时仅能用顶层函数来实现操作

7、符重载78intmain()Ca,b,c;a=operator+(b,c);return0;}例如:用顶层函数重载操作符+,将两个C对象加起来,并得到一个C对象作为结果。11重载二元操作符时,需要两个参数顶层操作符重载函数的调用方式与普通函数相同:没有类名和域解析操作符函数名加实参这种方式更简洁函数名重载的功能(编译期绑定)12用顶层函数进行操作符重载相对于成员函数的优势:X转型构造函数将一个浮点数转换成一个Complex对象ComplexComplex∷operator+(constdouble&d) {Complexv(r

8、eal+d,imag);returnv;}1X√ComplexComplex::operator+(Complexc)const{Complexc1(real+c.real,imag+c.imag);returnc1;}错误,成员操作符不能用于一个非对象标识,系统也无法将它转

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

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

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