c++进阶课程讲义_v..

c++进阶课程讲义_v..

ID:15456874

大小:2.09 MB

页数:155页

时间:2018-08-03

c++进阶课程讲义_v.._第1页
c++进阶课程讲义_v.._第2页
c++进阶课程讲义_v.._第3页
c++进阶课程讲义_v.._第4页
c++进阶课程讲义_v.._第5页
资源描述:

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

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

2、,把被处理的对象(数据)类型作为参数传递。总结:Ø模板把函数或类要处理的数据类型参数化,表现为参数的多态性,称为类属。Ø模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为。轻松入门实战应用传智播客C++课程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){char

3、t=a;a=b;b=t;}*///template关键字告诉C++编译器我要开始泛型了.你不要随便报错//数据类型T参数化数据类型templatevoidmyswap(T&a,T&b){Tt;t=a;a=b;b=t;}voidmain(){//chara='c';intx=1;inty=2;myswap(x,y);//自动数据类型推导的方式轻松入门实战应用传智播客C++课程floata=2.0;floatb=3.0;myswap(a,b);//自动数据类型推导的方式myswap(a,b);//显示类型调用cout<<"h

4、ello..."<类型形式参数的形式为:typenameT1,typenameT2,……,typenameTn或classT1,classT2,……,classTn函数模板调用myswap(a,b);//显示类型调用myswap(a,b);//自动数据类型推导轻松入门实战应用传智播客C++课程6.1.3函数模板和模板函数6.1.4函数模板做函数参数#includeusingnamespaces

5、td;templatevoidsortArray(T*a,T2num){Ttmp;inti,j;for(i=0;ivoidpirntArray(T*a,intnum){inti=0;for(i=0;i

6、ara[]="ddadeeettttt";num=strlen(a);printf("排序之前");pirntArray(a,num);sortArray(a,num);//显示类型调用模板函数<>printf("排序之后");pirntArray(a,num);cout<<"hello..."<

7、则:/*1函数模板可以像普通函数一样被重载2C++编译器优先考虑普通函数3如果函数模板可以产生一个更好的匹配,那么选择模板4可以通过空模板实参列表的语法限定编译器只通过模板匹配*/轻松入门实战应用传智播客C++课程案例1:#includeusingnamespacestd;templatevoidmyswap(T&a,T&b){Tt;t=a;a=b;b=t;cout<<"myswap模板函数do"<

8、wap普通函数do"<

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

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

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