C进阶课程讲义.doc

C进阶课程讲义.doc

ID:55631247

大小:4.30 MB

页数:155页

时间:2020-05-21

C进阶课程讲义.doc_第1页
C进阶课程讲义.doc_第2页
C进阶课程讲义.doc_第3页
C进阶课程讲义.doc_第4页
C进阶课程讲义.doc_第5页
资源描述:

《C进阶课程讲义.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、传智播客C++进阶课程讲义传智扫地僧6、函数模板和类模板前言C++提供了函数模板(functiontemplate)。所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。1)C++提供两种模板机制:函数模板、类模板2)类属——类型参数化,又称参数模板使得程序(算法)可以从逻辑功能上抽象,把被处理的对象(数据)类型作为参数传递。总结:Ø

2、模板把函数或类要处理的数据类型参数化,表现为参数的多态性,称为类属。Ø模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为。6.1函数模板6.1.1为什么要有函数模板需求:写n个函数,交换char类型、int类型、double类型变量的值。案例:#includeusingnamespacestd;/*voidmyswap(int&a,int&b){intt=a;a=b;b=t;}voidmyswap(char&a,char&b){chart=a;a=b;b=t;}*///template关键字告诉C++编译器我要开始泛型了.你不要随便报

3、错//数据类型T参数化数据类型templatevoidmyswap(T&a,T&b){Tt;t=a;a=b;b=t;}voidmain(){//chara='c';intx=1;inty=2;myswap(x,y);//自动数据类型推导的方式floata=2.0;floatb=3.0;myswap(a,b);//自动数据类型推导的方式myswap(a,b);//显示类型调用cout<<"hello..."<

4、类型形式参数的形式为:typenameT1,typenameT2,……,typenameTn或classT1,classT2,……,classTn函数模板调用myswap(a,b);//显示类型调用myswap(a,b);//自动数据类型推导6.1.3函数模板和模板函数6.1.4函数模板做函数参数#includeusingnamespacestd;templatevoidsortArray(T*a,T2num){Ttmp;inti,j;for(i=0;i

5、voidpirntArray(T*a,intnum){inti=0;for(i=0;i(a,num);sortArray(a,num);//显示类型调用模板函数<>printf("

6、排序之后");pirntArray(a,num);cout<<"hello..."<usingnamespacestd;tem

7、platevoidmyswap(T&a,T&b){Tt;t=a;a=b;b=t;cout<<"myswap模板函数do"<(cData,iData);//结论函数模板不提供隐式的数据类型转换必须是严格的匹配myswap(cData,iData);//mysw

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

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

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