欢迎来到天天文库
浏览记录
ID:44957931
大小:159.00 KB
页数:75页
时间:2019-11-06
《第4章_运算符重载》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第四章运算符重载C++面向对象程序设计本章主要内容4.1什么是运算符重载4.2运算符重载的方法4.3重载运算符的规则4.4运算符重载函数作为类成员函数和友元函数4.5重载双目运算符4.6重载单目运算符4.7重载流插入运算符和流提取运算符4.8不同类型数据间的转换2【目的要求】1、掌握运算符重载的基础知识。2、掌握运算符重载函数为类成员函数及友元函数的方法。3、熟悉不同类型数据间的转换。【重点】运算符重载的方法;运算符重载函数作为类成员函数;运算符重载函数作为友元函数;单目运算符重载;不同类型数据之间的转换。【难点】单目运算符重载函数;不同类型数据间的转换。34.1什么是
2、运算符重载函数的重载所谓函数的重载是指完成不同功能的函数可以具有相同的函数名。C++的编译器是根据函数的实参来确定应该调用哪一个函数的。运算符重载就是赋予已有的运算符多重含义。C++通过重新定义运算符,使它能够用于特定类的对象执行特定的功能4例如:“<<”是C++的位运算符中的左移运算符,但在输出操作中又是与流对象cout配合使用的流插入运算符。“>>”是右移运算符,但在输入操作中又是与流对象cin配合使用的流提取运算符。因此,如果程序中用“<<”和“>>”作流插入运算符和流提取运算符,必须在本文件模块中包含头文件iostream。例4.1没有用运算符重载,通过函数来实
3、现两个复数相加。5#includeusingnamespacestd;classComplex{public:Complex(){real=0;imag=0;}//定义构造函数Complex(doubler,doublei){real=r;imag=i;}Complexcomplex_add(Complex&c2);voiddisplay();//声明输出函数private:doublereal;//实部doubleimag;//虚部};6ComplexComplex::complex_add(Complex&c2){Complexc;c.real=
4、real+c2.real;//两个复数实部相加c.imag=imag+c2.imag;//两个复数虚部相加returnc;}voidComplex::display()//定义输出函数{cout<<"("<5、0;}8运算结果是正确的。但能否进行:c3=c1+c2;的运算呢?4.2运算符重载的方法运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数。即:运算符重载实质上是函数的重载。重载运算符的一般格式为:函数类型operator运算符名称(形参表列){对运算符的重载处理}9例如:想将“+”用于Complex类(复数)的加法运算,函数的原型可以是:Complexoperator+(Complex&c1,Complex&c2);其中:operator是关键字,是专门用于定义重载运算符的函数的;运算符名称就是C++提供给用户的预下定义运算符6、。注意:函数名是由operator和运算符组成,即上面的operator+就是函数名,意思是:对运算符+重载。10定义了重载运算符的函数后,可出说:函数operator+重载了运算符+。如执行到复数相加:c3=c2+c1;时,系统就会调用operator+函数,把c1和c2作为实参。怎样理解运算符重载函数?对于普通函数,参数出现在圆括号内,而对于运算符重载函数,参数出现在其左、左两侧。例4.2重载运算符“+”,使之能用于两个复数对象的相加。11#includeusingnamespacestd;classComplex{public:Complex(7、){real=0;imag=0;}//默认构造函数(没有参数)Complex(doubler,doublei){real=r;imag=i;}//构造函数重载(有两个参数)Complexoperator+(Complex&c2);//声明重载运算符+的函数voiddisplay();private:doublereal;doubleimag;};12ComplexComplex::operator+(Complex&c2)//定义重载运算符+的函数{Complexc;c.real=real+c2.real;c.imag=imag+c2.i
5、0;}8运算结果是正确的。但能否进行:c3=c1+c2;的运算呢?4.2运算符重载的方法运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数。即:运算符重载实质上是函数的重载。重载运算符的一般格式为:函数类型operator运算符名称(形参表列){对运算符的重载处理}9例如:想将“+”用于Complex类(复数)的加法运算,函数的原型可以是:Complexoperator+(Complex&c1,Complex&c2);其中:operator是关键字,是专门用于定义重载运算符的函数的;运算符名称就是C++提供给用户的预下定义运算符
6、。注意:函数名是由operator和运算符组成,即上面的operator+就是函数名,意思是:对运算符+重载。10定义了重载运算符的函数后,可出说:函数operator+重载了运算符+。如执行到复数相加:c3=c2+c1;时,系统就会调用operator+函数,把c1和c2作为实参。怎样理解运算符重载函数?对于普通函数,参数出现在圆括号内,而对于运算符重载函数,参数出现在其左、左两侧。例4.2重载运算符“+”,使之能用于两个复数对象的相加。11#includeusingnamespacestd;classComplex{public:Complex(
7、){real=0;imag=0;}//默认构造函数(没有参数)Complex(doubler,doublei){real=r;imag=i;}//构造函数重载(有两个参数)Complexoperator+(Complex&c2);//声明重载运算符+的函数voiddisplay();private:doublereal;doubleimag;};12ComplexComplex::operator+(Complex&c2)//定义重载运算符+的函数{Complexc;c.real=real+c2.real;c.imag=imag+c2.i
此文档下载收益归作者所有