《(11)--4.1 运算符重载方法.ppt》由会员分享,可在线阅读,更多相关《(11)--4.1 运算符重载方法.ppt(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、运算符重载的概念函数重载函数重载运算符重载运算符重载对C+已提供的运算符已提供的运算符进行重新定行重新定义,赋予它予它们新的含新的含义,实现新的功能,新的功能,使之一名多用。使之一名多用。运算符重载的概念运算符运算符“+”+”的应用的应用5+8 int 加5.8+3.67 float double加“”:C+的位移运算符(右移),流提取运算符运算符运算符“”的应用的应用运算符重载的概念c1=(3+4i)c2=(5-10i)在数学中可以直接用“+”号实现c3=c1+c2,即c3=(3+5,(4-10)i)=(8,-6i)。在在C+C+中如何实现两个复数相加?中如何实现两个复数相加?通过自定义函数
2、实现复数的相加两个复数两个复数c1c1和和c2c2相加相加程序1 自定义函数实现复数的相加 1#include 2 using namespace std;3 class Complex /定定义Complex类 4 public:5 Complex()6 7 real=0;/定定义构造函数构造函数 8 imag=0;9 10 Complex(double r,double i)11 12 real=r;/构造函数重构造函数重载13 imag=i;14 15 Complex complex_add(Complex&c2);/声明复数相加声明复数相加16 void display();/声明声明
3、输出函数出函数17 private:18 double real;/实部部19 double imag;/虚部虚部20;21 Complex Complex complex_add(Complex&c2)/定定义复数相加函数复数相加函数22 23 Complex c;24 c.real=real+c2.real;25 c.imag=imag+c2.imag;26 return c;27 28 void Complex display()/定定义输出函数出函数29 30 cout(real,imagi)real+c2.real;c.imag=this-imag+c2.imag;32 int ma
4、in()33 34 Complex c1(3,4),c2(5,-10),c3;/定定义3个复数个复数对象象35 c3=plex_add(c2);/调用复数相加函数用复数相加函数36 coutc1=;37 c1.display();/输出出c1的的值38 coutc2=;39 c2.display();/输出出c2的的值40 coutc1+c2=;41 c3.display();/输出出c3的的值42 return 0;43 程序1 自定义函数实现复数的相加 c.real=c1.real+c2.real;c.imag=c1.imag+c2.imag;c3=c;运行运行结果果:c1=(3,4i)c
5、2=(5,-10i)c1+c2=(8,-6i)调用方式调用方式不直观、太烦琐。不直观、太烦琐。能否直接用加号“+”来实现复数运算,如c3=c1+c2?程序1 自定义函数实现复数的相加对运算符“+”进行重载运算符重运算符重载的方法的方法 定义一个重载运算符的函数。运算符重载的方法:运算符重载的方法:运算符重运算符重载是通是通过定定义函数函数实现的。运算符重的。运算符重载实质上是函数的重上是函数的重载。运算符重运算符重载的方法的方法重载运算符函数格式重载运算符函数格式例如,重载“+”用于Complex类(复数)的加法运算,函数的原型可为:Complex operator+(Complex&c1,C
6、omplex&c2);函数类型 operator 运算符名称(形参表)对运算符的重载处理 程序程序2 对运算符运算符“+”实行重行重载,实现两个复数相加。两个复数相加。1#include 2 using namespace std;3 class Complex 4 public:5 Complex()6 7 real=0;8 imag=0;9 10 Complex(double r,double i)11 12 real=r;13 imag=i;1415 Complex operator+(Complex&c2);/声明重声明重载运算符运算符+的函数的函数16 void display();
7、17 private:18 double real;19 double imag;20;程序程序2 对运算符运算符“+”实行重行重载,实现两个复数相加。两个复数相加。21 Complex Complex operator+(Complex&c2)/定定义重重载运算符运算符+的函数的函数22 23 Complex c;24 c.real=real+c2.real;/实现两个复数的两个复数的实部相加部相加25 c.imag=imag+c2.imag;/实现两个复数的虚部相加两个复数的虚部相加26 return c;27 28 void Complex display()29 30 cout(rea
8、l,imagi)endl;/输出复数形式出复数形式31 程序程序2 对运算符运算符“+”实行重行重载,实现两个复数相加。两个复数相加。32 int main()33 34 Complex c1(3,4),c2(5,-10),c3;35 c3=c1+c2;/运算符运算符+用于复数运算用于复数运算36 coutc1=;37 c1.display();/输出出c138 coutc2=;39 c2.display();/输出出c240 coutc1+c2=;41 c3.display();/输出出c1+c242 return 0;43 运行运行结果:果:c1=(3,4i)c2=(5,-10i)c1+c2=(8,-6i)编译器解释为 c1.operator+(c2)运算符重载能使用户程序易于编写、阅读和维护小小结运算符重载的概念1运算符重载的方法2