c谭浩强教学第4章修订(周四学时)

c谭浩强教学第4章修订(周四学时)

ID:41518929

大小:83.92 KB

页数:63页

时间:2019-08-26

c谭浩强教学第4章修订(周四学时)_第1页
c谭浩强教学第4章修订(周四学时)_第2页
c谭浩强教学第4章修订(周四学时)_第3页
c谭浩强教学第4章修订(周四学时)_第4页
c谭浩强教学第4章修订(周四学时)_第5页
资源描述:

《c谭浩强教学第4章修订(周四学时)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、4.1运算符重载的概述4.2运算符重载的方法4.3运算符重载的规则4.4运算符重载的函数一、友元运算符函数二、成员运算符函数4.5成员运算符函数与友元运算符函数的比较4.6单目运算符“++”和“--”的重载4.7重载流插入运算符和流提取运算符4.8不同类型数据间的转换4.1运算符重载概述例如:定义一个复数类complex,现在有两个对象cl和c2,希望做两个复数的加法:cl+c2o例4.1通过函数来实现复数加。(P120)#includeusingnamespacestd;classComplex{public:Complex(){r

2、eal二0;imag=0;}Complex(doubler,doublei){real=r;imag=i;}Complexcomplex_add(Complex&c2);〃复数相加的函数voiddisplay();private:doub1ereal;〃复数的实部doub1eimag;〃复数的虚部};ComplexComplex::complex_add(Complex&c2){Complexc;〃声明局部变量c.real=real+c2.real;c.imag=imag+c2.imag;returnc;}voidComplex::display(){c

3、out«z/(,,«real«,/,z,«imag«z/i)z/«endl;}intmain(){Complexcl(3,4),c2(5,TO),c3;〃定义3个复数对象c3=cl.complex_add(c2);〃调用复数相加函数cout〈〈〃cl二〃;cl.display();cout〈〈〃c2二〃;c2・display();cout〈〈〃cl+c2二〃;c3・display();return0;说明:做两个复数的加法:cl+c2,就应把“+”号解释为两个复数对象的实部与虚部之和.例如:“gkjhk”+”gjhkj”string1+string2;因

4、此.运算符重载的意义:(重载:一名多用)运算符重载的目的是为了满足某种操作的需要,在原有运算符实现不了,又不增加新的运算符种类的基础上,对含义相近的运算符进行重载。4.2运算符重载的方法在C++内部,任何运算都是通过函数来实现的。所以运算符重载其实就是函数重载,其函数名规定为:operator后随一个要重载的的运算符。重载运算符的函数一般格式函数类型operator运算符名称(形参表列){对运算符的重载处理}例如:operator+(参数)当编译器遇到名为:operator的运算符函数就检查传递给函数的参数类型,如在一个运算符的两边是自定义的数据类型,就

5、执行用户自定义的重载函数,而不是内部运算符的常规程序。例4.2改写例4。1运用重载函数实现两个complex类对象相加。#includeusingnamespacestd;classComplex{public:Complex(){real=O;imag=O;}Complex(double^doublei){real=r;imag=i;}Complexoperator+(Complex&c2);〃声明重载运算符+的函数voiddisplay();private:doublereal;doubleimag;};/定义重载运算符+的函数C

6、omplexComplex::operator+(Complex&c2){Complexc;c.real=real+c2.real;c.imag=imag+c2.imag;returnc;voidComplex::display(){cout«H(n«real«,«imag«Hi)H«endl;}intmain(){Complexcl(3,4),c2(5,・10),c3;c3=cl+c2;//c3=c1.operator+(c2);cout«ncl=n;cledisplayO;cout«nc2='';c2.displ町();cout«'*cl+c2=

7、'';c3.display();return0;4.3运算符重载的规则(P124~126)1.只能对已有的C++运算符进行重载,不允许用户自定义新的运算符;1.C++允许重载的运算符算术运算符+、■、*、/、%位运算符A>&、1、!、>>、«关系运算符v、v=、>*>=、!=*—逻辑运算符!、&&、II赋值运算符=>+=>-=>/=、«=>>>=、&=、!=>A=其它运算符++、[]、()、・>、new、new[]、delete>delete[]有以下5个运算符不能重载:•类属关系运算符•成员指针运算符“林•作用域分辨符:"•长度运算符sizeof•三目

8、运算符“?:”2.重载不能改变运算符的操作个数、原有的优先级、原有的结合性;3.

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

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

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