模板和泛型编程课件.ppt

模板和泛型编程课件.ppt

ID:57136296

大小:90.50 KB

页数:22页

时间:2020-08-01

模板和泛型编程课件.ppt_第1页
模板和泛型编程课件.ppt_第2页
模板和泛型编程课件.ppt_第3页
模板和泛型编程课件.ppt_第4页
模板和泛型编程课件.ppt_第5页
资源描述:

《模板和泛型编程课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、模板与泛型编程1.普通函数的缺陷求两个数最大值的函数,可以重载多个函数:intmax(inta,intb){return(a>b)?a:b;}charmax(characharb){return(a>b)?a:b;}floatmax(floata,floatb){return(a>b)?a:b;}doublemax(doublea,doubleb){return(a>b)?a:b;}以上函数的实现方式完全一样,是否可以用一个通用函数完成?普通类的缺陷分别有整数链表及浮点数链表:structinode{structfnode{intval;floatval;inode*next;}

2、;fnode*next;};classilist{classflist{inode*head;fnode*head;public:public:ilist();flist();~ilist();~flist();voidclear();voidclear();voidinsert(int);voidinsert(float);voidappend(int);voidappend(float);boolremove(int);boolremove(float);boolcontains(int);boolcontains(float);intlength();intlength()

3、;};};普通类的缺陷对于一些结构及操作相同,只是成员数据类型不同的抽象数据结构,若是用普通类class进行封装,需要将不同的数据类型封装成不同的类,造成代码重复及使用不便.解决的方法之一:利用class封装较为通用的数据类型,使用的时候再进行数据类型转换.解决的方法之二:使用模板2.模板对于结构和操作相同,但成员数据类型不同的抽象类型,可以通过模板实现。模板有两种形式:模板函数(函数模板)模板类(类模板)模板声明格式为:template<模板参数表>函数模板对于功能和操作基本相同,只是参数或返回值类型不同的若干函数,可以通过函数模板实现.intmax(intx,inty){//

4、求两个整数的最大值return(x>y)?x:y;}floatmax(floatx,floaty){//求两个浮点数的最大值return(x>y)?x:y;}charmax(charx,chary){//求两个字符的最大值return(x>y)?x:y;}模板函数templateTmax(Tx,Ty){return(x>y)?x:y;}voidmain(){intx1=10,y1=8;floatx2=20.3,y2=33.5;charx3=‘k’,y3=‘n’;cout<<“max(x1,y1)=“<

5、y2)=“<Tmax(Tx,Ty){return(x>y)?x:y;}voidmain(){inti;charc;floatf;max(i,i);//ok.max(c,c);//ok.max(f,f);//ok.max(i,c);//error:templateparameter'T'isambi

6、guousmax(i,f);//error:templateparameter'T'isambiguousmax(c,f);//error:templateparameter'T'isambiguous}重载模板函数可以重载于与之同名的非模板函数.templateTmax(Tx,Ty){return(x>y)?x:y;}//模板函数char*max(char*x,char*y){//非模板函数return(strcmp(x,y)>=0)?x:y;}voidmain(){charch1[6]=“abc”;charch2[6]=“def”;cout<<“max(ch1

7、,ch2)=“<Tmax(Tx,Ty){return(x>y)?x:y;}//函数1char*max(char*x,char*y){//函数2return(strcmp(x,y)>=0)?x:y;}constchar*max(char*x,constchar*y){/

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

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

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