c++运算符重载、模板.ppt





《c++运算符重载、模板.ppt》由会员分享,可在线阅读,更多相关《c++运算符重载、模板.ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目录12.1 运算符重载12.2 模板12.3 小结112.1 运算符重载用“+”、“-”能够实现复数的加减运算吗?实现复数加减运算的方法 重载“+”、“-”运算符运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时导致不同的行为。212.1.1 运算符重载的规则C+几乎可以重载全部的运算符,而且只能够重载C+中已经有的。不能重载的运算符举例:“.”、“.*”、“:”、“?:”重载之后运算符的优先级和结合性都不会改变。运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造。两种重载方式:重载为类的非静态成员函数和重载为非成员函数。312.1 运算符重载12.1
2、.2 运算符重载为成员函数声明形式函数类型 operator 运算符(形参).重载为类成员函数时 参数个数=原操作数个数-1(后置+、-除外)重载为非成员函数时 参数个数=原操作数个数,且至少应该有一个自定义类型的形参。412.1 运算符重载12.1.2 运算符重载为成员函数(续)双目运算符 B如果要重载 B 为类成员函数,使之能够实现表达式 oprd1 B oprd2,其中 oprd1 为A 类对象,则 B 应被重载为 A 类的成员函数,形参类型应该是 oprd2 所属的类型。经重载后,表达式 oprd1 B oprd2 相当于 oprd1.operator B(oprd2)512.1 运算
3、符重载例12-1(教材例8-1)复数类加减法运算重载成员函数形式 将“+”、“-”运算重载为复数类的成员函数。规则:实部和虚部分别相加减。实部和虚部分别相加减。操作数:两个操作数都是复数类的对象。两个操作数都是复数类的对象。612.1 运算符重载 12.1.2 运算符重载为成员函数例12-1(续)#includeusingnamespacestd;classComplex/复数类定义public:/外部接口Complex(doubler=0.0,doublei=0.0):real(r),imag(i)/构造函数Complexoperator+(constComplex&c2)const;/运算
4、符+重载成员函数Complexoperator-(constComplex&c2)const;/运算符-重载成员函数voiddisplay()const;/输出复数private:/私有数据成员doublereal;/复数实部doubleimag;/复数虚部;712.1 运算符重载 12.1.2 运算符重载为成员函数例12-1(续)ComplexComplex:operator+(constComplex&c2)const/重载运算符函数实现returnComplex(real+c2.real,imag+c2.imag);/创建一个临时无名对象作为返回值ComplexComplex:opera
5、tor-(constComplex&c2)const/重载运算符函数实现returnComplex(real-c2.real,imag-c2.imag);/创建一个临时无名对象作为返回值voidComplex:display()constcout(real,imag)endl;812.1 运算符重载 12.1.2 运算符重载为成员函数例12-1(续)intmain()/主函数Complexc1(5,4),c2(2,10),c3;/定义复数类的对象coutc1=;c1.display();coutc2=;c2.display();c3=c1-c2;/使用重载运算符完成复数减法coutc3=c1-
6、c2=;c3.display();c3=c1+c2;/使用重载运算符完成复数加法coutc3=c1+c2=;c3.display();return0;912.1 运算符重载 12.1.2 运算符重载为成员函数例12-1(续)程序输出的结果为:c1=(5,4)c2=(2,10)c3=c1-c2=(3,-6)c3=c1+c2=(7,14)1012.1 运算符重载 12.1.2 运算符重载为成员函数运算符成员函数的设计前置单目运算符 U如果要重载 U 为类成员函数,使之能够实现表达式 U oprd,其中 oprd 为A类对象,则 U 应被重载为 A 类的成员函数,无形参。经重载后,表达式 U opr
7、d 相当于 oprd.operator U()1112.1 运算符重载 12.1.2 运算符重载为成员函数运算符成员函数的设计(续)后置单目运算符+和-如果要重载+或-为类成员函数,使之能够实现表达式 oprd+或 oprd-,其中 oprd 为A类对象,则+或-应被重载为 A 类的成员函数,且具有一个 int 类型形参。经重载后,表达式 oprd+相当于 oprd.operator+(0)1212.1 运算符重载 12.1.2 运算符重载为成员函数例12-2(教材例8-2)运算符前置+和后置+重载为时钟类的成员函数。前置单目运算符,重载函数没有形参,对于后置单目运算符,重载函数需要有一个整型
8、形参。操作数是时钟类的对象。实现时间增加1秒钟。1312.1 运算符重载 12.1.2 运算符重载为成员函数#includeusingnamespacestd;classClock/时钟类定义public:/外部接口Clock(inthour=0,intminute=0,intsecond=0);voidshowTime()const;Clock&operator+();/前置单目运算符重载Clockoperator+(int);/后置单目运算符重载private:/私有数据成员inthour,minute,second;Clock:Clock(inthour/*=0*/,intminute/
9、*=0*/,intsecond/*=0*/)if(0=hour&hour24&0=minute&minute60&0=second&secondhour=hour;this-minute=minute;this-second=second;elsecoutTimeerror!endl;1412.1 运算符重载 12.1.2 运算符重载为成员函数例12-2(续)voidClock:showTime()const/显示时间函数couthour:minute:second=60)second-=60;minute+;if(minute=60)minute-=60;hour=(hour+1)%24;r
10、eturn*this;ClockClock:operator+(int)/后置单目运算符重载/注意形参表中的整型参数Clockold=*this;+(*this);/调用前置“+”运算符returnold;1512.1 运算符重载 12.1.2 运算符重载为成员函数例12-2(续)intmain()ClockmyClock(23,59,59);coutFirsttimeoutput:;myClock.showTime();coutShowmyClock+:;(myClock+).showTime();coutShow+myClock:;(+myClock).showTime();return0
11、;1612.1 运算符重载 12.1.2 运算符重载为成员函数例12-2(续)运行结果:First time output:23:59:59Show myClock+:23:59:59Show+myClock:0:0:112.1.3运算符重载为非成员函数函数的形参代表依自左至右次序排列的各操作数。后置单目运算符+和-的重载函数,形参列表中要增加一个int,但不必写形参名。如果在运算符的重载函数中需要操作某类对象的私有成员,可以将此函数声明为该类的友元。1712.1 运算符重载12.1.3运算符重载为非成员函数(续)双目运算符 B重载后,表达式oprd1 B oprd2 等同于operator
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 运算 重载 模板

限制150内