C++程序设计 教学课件 作者 杨长兴 刘卫国 曹岳辉 第7章 重载与模板.ppt

C++程序设计 教学课件 作者 杨长兴 刘卫国 曹岳辉 第7章 重载与模板.ppt

ID:50081991

大小:324.50 KB

页数:26页

时间:2020-03-08

C++程序设计 教学课件 作者 杨长兴 刘卫国 曹岳辉 第7章 重载与模板.ppt_第1页
C++程序设计 教学课件 作者 杨长兴 刘卫国 曹岳辉 第7章 重载与模板.ppt_第2页
C++程序设计 教学课件 作者 杨长兴 刘卫国 曹岳辉 第7章 重载与模板.ppt_第3页
C++程序设计 教学课件 作者 杨长兴 刘卫国 曹岳辉 第7章 重载与模板.ppt_第4页
C++程序设计 教学课件 作者 杨长兴 刘卫国 曹岳辉 第7章 重载与模板.ppt_第5页
资源描述:

《C++程序设计 教学课件 作者 杨长兴 刘卫国 曹岳辉 第7章 重载与模板.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7章重载与模板重载7.1.1函数重载引入原因重载指用同一个函数名对应着多个函数实现的情况。如:求两个数的较大值,若数的类型不同,则返回值类型不同。intmax(int,int);…floatc=max(3.14,3.5);//error因此一个定义了实现整型数比较功能的函数无法用于实现实型数的比较,尽管其功能一致。这时就可采用重载。在C++中,允许两个或两个以上的函数采用相同的名字,只要使用不同类型、不同数目的参数或不同的返回值,编译器便知道在什么情况下该调用哪个函数,这就叫函数重载。如:int

2、max(intx,inty){return((x>y)?x:y);}doublemax(doublex,doubley){return((x>y)?x:y);}#includevoidmain(){cout<

3、。如:voidfunc(int);intfunc(int);//错误intmin(int,int);intmin(int,int,int);//正确intadd(int,int);doubleadd(double,double);//正确(2)typedef定义的类型只是给已有类型取另外一个名字,编译器不能将其同原类型区分。如:typedefINTint;voidfunc(intx){...}voidfunc(INTx){…}(3)重载函数一般应具有相同的功能,否则会破坏程序的可读性。注意事项问题

4、的提出1、基本数据类型系统提供了大量运算符。如:intx,y;x=x+y;表达简洁,使用方便。2、问题的提出:对于串类的对象合并:stringx,y;strcat(x,y);不如上述运算那样简单,希望能改造为:x=x+y;更加简单和直观!因此,需要对“+”进行不同的解释,即:重载7.1.2运算符重载一、C++中的运算符1、大多数系统预定义运算符都能重载,除开以下:.::?:#*(当乘法运算符时可重载)“.”“::”“*”在C++中有特定定义“?:”不值得重载“#”不能被重载2、重载时的注意事项:(

5、1)不能改变优先级;(2)不能改变结合性;(3)不能改变运算符所需操作数的个数;(4)重载后,可按这些运算符的表达方式使用。一、通过运算符重载函数进行重载1、运算符重载函数是成员函数语法形式:TypeX::operator@(参数表){//相对于该类而定义的操作}运算符重载的语法形式返回类型重载该运算符的类名要重载的运算符符号2、运算符重载函数是友元函数语法形式:Typeoperator@(参数表){//相对于该类而定义的操作}罗列运算符所需要的操作数3、实例…voidoperator++()vo

6、idoperator--()…voidcounter::operator++(){if(value<65535)value++;}…voidcounter::operator--(){if(value>0)value--;}注意:重载中注意的问题1、运算符重载函数是友元函数、成员函数的区别;2、运算符被重载时,只是相对一特定类被重载,在特定的环境下作出特定的解释。当离开这个特定环境后,具有原来的意义(系统定义);3、当重载运算符解释失败时,用该运算符的预定义版本(系统)进行解释;4、用此方法重载时

7、,只能对一个系统已有运算符进行特定环境下的新的解释,而不能创造新的运算符。当运算符不够用时,用函数调用来实现;5、除“=”以外,重载的运算符可以被任何派生类所继承,“=”需要每个类明确定义自己的解释;6、重载可能让程序的可读性下降,在使用时应模仿运算符的习惯用法。一、运算符重载函数定义的两种方式1、成员函数和友元函数2、差别的关键原因:this指针二、一元运算符1、不论前缀还是后缀,需要一个操作数2、对于任意一元运算符α:(1)成员函数重载运算符定义typex::operatorα(){…}显式调

8、用objX.operatorα()隐式调用αobjX或:ojbXα(2)友元函数重载运算符定义typeoperatorα(Xobj){…}显式调用operatorα(objX)隐式调用αojbX或:objXα一元和二元运算符方式定义显式调用隐式调用备注成员 函数TypeX::operatorα(){…}objX.operatorα()αobjX或:objXα操作数通过THIS指针隐含传递,因此参数表为空。友元 函数Typeoperatorα(Xojb){…}operatorα(ob

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

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

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