欢迎来到天天文库
浏览记录
ID:26961055
大小:602.51 KB
页数:69页
时间:2018-11-30
《《运算符重载 》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章运算符重载10.1什么是运算符重载10.2运算符重载的方法10.3重载运算符的规则10.4运算符重载函数作为类成员函数和友元函数10.5重载双目运算符10.6重载单目运算符10.7重载流插入运算符和流提取运算符10.8不同类型数据间的转换函数重载就是对一个已有的函数赋予新的含义,使之实现新功能。用户能根据自己的需要对C++已提供的运算符进行重载,赋予它们新的含义,使之一名多用。例如10.1:用“+”号进行两个复数的相加。在C++中不能在程序中直接用运算符“+”对复数进行相加运算。用户必须自己设法实现复数相加。10
2、.1什么是运算符重载例10.1通过函数来实现复数相加。#includeusingnamespacestd;classComplex//定义Complex类{public:Complex(){real=0;imag=0;}//定义构造函数Complex(doubler,doublei){real=r;imag=i;}//构造函数重载Complexcomplex_add(Complex&c2);//声明复数相加函数voiddisplay();//声明输出函数private:doublereal;//实部d
3、oubleimag;//虚部};ComplexComplex∷complex_add(Complex&c2){Complexc;c.real=real+c2.real;c.imag=imag+c2.imag;returnc;}voidComplex∷display()//定义输出函数{cout<<″(″<4、cout<<″c1=″;c1.display();//输出c1的值cout<<″c2=″;c2.display();//输出c2的值cout<<″c1+c2=″;c3.display();//输出c3的值return0;}运行结果如下:c1=(3,4i)c2=(5,-10i)c1+c2=(8,-6i)能否直接用加号“+”来实现复数运算呢?如:c3=c1+c2;运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。重载运算符的函数一般格式如下:函数类型operato5、r运算符名称(形参表列){对运算符的重载处理}例如,想将“+”用于Complex类(复数)的加法运算,函数的原型可以是这样的:Complexoperator+(Complex&c1,Complex&c2);10.2运算符重载的方法在定义了重载运算符的函数后,可以说:函数operator+重载了运算符+。为了说明在运算符重载后,执行表达式就是调用函数的过程,可以把两个整数相加也想像为调用下面的函数:intoperator+(inta,intb){return(a+b);}如果有表达式5+8,就调用此函数,将5和8作为调用函6、数时的实参,函数的返回值为13。这就是用函数的方法理解运算符。例10.2改写例10.1,重载运算符“+”,使之能用于两个复数相加。#includeusingnamespacestd;classComplex{public:Complex(){real=0;imag=0;}Complex(doubler,doublei){real=r;imag=i;}Complexoperator+(Complex&c2);//声明重载运算符的函数voiddisplay();private:doublereal;dou7、bleimag;};ComplexComplex∷operator+(Complex&c2)//定义重载运算符的函数{Complexc;c.real=real+c2.real;c.imag=imag+c2.imag;operator+取代了complex_add隐含this指针returnc;}voidComplex∷display(){cout<<″(″<8、用于复数运算cout<<″c1=″;c1.display();cout<<″c2=″;c2.display();cout<<″c1+c2=″;c3.display();return0;}运行结果:c1=(3,4i)c2=(5,-10i)c1+c2=(8,-6i)c3=c1.complex_add(c2);c1+c2解
4、cout<<″c1=″;c1.display();//输出c1的值cout<<″c2=″;c2.display();//输出c2的值cout<<″c1+c2=″;c3.display();//输出c3的值return0;}运行结果如下:c1=(3,4i)c2=(5,-10i)c1+c2=(8,-6i)能否直接用加号“+”来实现复数运算呢?如:c3=c1+c2;运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。重载运算符的函数一般格式如下:函数类型operato
5、r运算符名称(形参表列){对运算符的重载处理}例如,想将“+”用于Complex类(复数)的加法运算,函数的原型可以是这样的:Complexoperator+(Complex&c1,Complex&c2);10.2运算符重载的方法在定义了重载运算符的函数后,可以说:函数operator+重载了运算符+。为了说明在运算符重载后,执行表达式就是调用函数的过程,可以把两个整数相加也想像为调用下面的函数:intoperator+(inta,intb){return(a+b);}如果有表达式5+8,就调用此函数,将5和8作为调用函
6、数时的实参,函数的返回值为13。这就是用函数的方法理解运算符。例10.2改写例10.1,重载运算符“+”,使之能用于两个复数相加。#includeusingnamespacestd;classComplex{public:Complex(){real=0;imag=0;}Complex(doubler,doublei){real=r;imag=i;}Complexoperator+(Complex&c2);//声明重载运算符的函数voiddisplay();private:doublereal;dou
7、bleimag;};ComplexComplex∷operator+(Complex&c2)//定义重载运算符的函数{Complexc;c.real=real+c2.real;c.imag=imag+c2.imag;operator+取代了complex_add隐含this指针returnc;}voidComplex∷display(){cout<<″(″<8、用于复数运算cout<<″c1=″;c1.display();cout<<″c2=″;c2.display();cout<<″c1+c2=″;c3.display();return0;}运行结果:c1=(3,4i)c2=(5,-10i)c1+c2=(8,-6i)c3=c1.complex_add(c2);c1+c2解
8、用于复数运算cout<<″c1=″;c1.display();cout<<″c2=″;c2.display();cout<<″c1+c2=″;c3.display();return0;}运行结果:c1=(3,4i)c2=(5,-10i)c1+c2=(8,-6i)c3=c1.complex_add(c2);c1+c2解
此文档下载收益归作者所有