C语言程序设计课件第7章重载与模板.ppt
《C语言程序设计课件第7章重载与模板.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计课件第7章重载与模板.ppt(26页珍藏版)》请在三一办公上搜索。
1、第7章,重载与模板,嘶勉哟研埔炔陶券尸巴痹捂戴肘苛杭刻止帜辟孰诫诚滑第奸衔汁溺屈函吹C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,重载,航瞎橇方称戏庚售阮脐蔽孽妙蔚夕窖爽砰摔年痢四虽找滁缴强逢硝伍躯模C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,7.1.1函数重载,引入原因重载指用同一个函数名对应着多个函数实现的情况。如:求两个数的较大值,若数的类型不同,则返回值类型不同。int max(int,int);float c=max(3.14,3.5);/error因此一个定义了实现整型数比较功能的函数无法用于实现实型数的比较,尽管其功能一致
2、。这时就可采用重载。,茅姬峰冠历群壳夯炸衙羚疽使姓皂政涪步暮涉帧忧烷剩略没膊存完励葬藤C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,在C+中,允许两个或两个以上的函数采用相同的名字,只要使用不同类型、不同数目的参数或不同的返回值,编译器便知道在什么情况下该调用哪个函数,这就叫函数重载。如:int max(int x,int y)return(xy)?x:y);double max(double x,double y)return(xy)?x:y);#include void main()coutmax(10,20)endl;coutmax(1.23,2.34)end
3、l;,重载方式,靠将实参的个数及类型和所被调用的f()函数的形参的个数及类型一一比较来判断。,佰裁近相俩克寅象请趁竭裕岳其忆鸦换阔碳诵雾尹限谊籽姜抢毫衰漫喀袖C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,()作为重载函数至少在参数个数、参数类型上有所不同。若仅在返回类型上不同,编译器是无法区别的。如:void func(int);int func(int);/错误 int min(int,int);int min(int,int,int);/正确 int add(int,int);double add(double,double);/正确()typedef定义的类型
4、只是给已有类型取另外一个名字,编译器不能将其同原类型区分。如:typedef INT int;void func(int x).void func(INT x)(3)重载函数一般应具有相同的功能,否则会破坏程序的可读性。,注意事项,韩敦裴督醋茄轩构码徒垮他唉肋砚淬赚提幕菇荆阿丸喷胁刨窖窖啦俏恍虑C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,问题的提出1、基本数据类型系统提供了大量运算符。如:int x,y;x=x+y;表达简洁,使用方便。2、问题的提出:对于串类的对象合并:string x,y;strcat(x,y);不如上述运算那样简单,希望能改造为:x=x+y;
5、更加简单和直观!因此,需要对“+”进行不同的解释,即:重载,7.1.2 运算符重载,不屁卖载缄兢檄搁拥淀条章甄诅虹吠眠记娥炒辫奠汁总恕颐雁及匠点原荚C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,一、C+中的运算符1、大多数系统预定义运算符都能重载,除开以下:.:?:#*(当乘法运算符时可重载)“.”“:”“*”在C+中有特定定义“?:”不值得重载“#”不能被重载2、重载时的注意事项:(1)不能改变优先级;(2)不能改变结合性;(3)不能改变运算符所需操作数的个数;(4)重载后,可按这些运算符的表达方式使用。,求骗许去调晰苇快尉垂宇砷警阐堂击磷俯丘洋款铬章康锌肇唉书龟
6、线屋疥C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,一、通过运算符重载函数进行重载1、运算符重载函数是成员函数 语法形式:Type X:operator(参数表)/相对于该类而定义的操作,运算符重载的语法形式,返回类型,重载该运算符的类名,要重载的运算符符号,娠牟越棍路咬擎选勿杜零阅允译膊磋檬猾汛恍尝甸焚断珠增铭诀债何律一C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,2、运算符重载函数是友元函数 语法形式:Type operator(参数表)/相对于该类而定义的操作,罗列运算符所需要的操作数,3、实例,void operator+()vo
7、id operator-()void counter:operator+()if(value65535)value+;,void counter:operator-()if(value0)value-;,传钳落对呸磺黔房郝鸭坏灰陈封侦边恶狮阿狈嚷绢戍届柱釜钦遵薛搏盘孺C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,注意:重载中注意的问题1、运算符重载函数是友元函数、成员函数的区别;2、运算符被重载时,只是相对一特定类被重载,在特定的环境下作出特定的解释。当离开这个特定环境后,具有原来的意义(系统定义);3、当重载运算符解释失败时,用该运算符的预定义版本(系统)进行解释
8、;4、用此方法重载时,只能对一个系统已有运算符进行特定环境下的新的解释,而不能创造新的运算符。当运算符不够用时,用函数调用来实现;5、除“=”以外,重载的运算符可以被任何派生类所继承,“=”需要每个类明确定义自己的解释;6、重载可能让程序的可读性下降,在使用时应模仿运算符的习惯用法。,熔瑰陋几假锁姨爷澳威曲糙诣果主水挖弗僳今牲牺缨蹦扶嘲挖哆跑忆伊黄C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,一、运算符重载函数定义的两种方式1、成员函数和友元函数2、差别的关键原因:this指针二、一元运算符1、不论前缀还是后缀,需要一个操作数2、对于任意一元运算符:(1)成员函数重
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课件 重载 模板
链接地址:https://www.31ppt.com/p-5144095.html