《C模板简介》PPT课件

《C模板简介》PPT课件

ID:36886651

大小:810.00 KB

页数:46页

时间:2019-05-10

《C模板简介》PPT课件_第1页
《C模板简介》PPT课件_第2页
《C模板简介》PPT课件_第3页
《C模板简介》PPT课件_第4页
《C模板简介》PPT课件_第5页
资源描述:

《《C模板简介》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、STL(StandardTemplateLibrary)泛型编程(GenericProgramming)代码复用第6章模板6.1模板概述6.2函数模板6.3类模板6.4标准模板库若一个程序的功能是对某种特定的数据类型进行处理,则可以将所处理的数据类型说明为参数,以便在其他数据类型的情况下使用。6.1模板概述(Templates)通过模板可以产生类或函数的集合,使它们操作不同的数据类型,从而避免需要为每一种数据类型产生一个单独的类或函数。泛型编程(genericprogramming)模板用于表达逻辑结构相同,但具体数据元素类型

2、不同的数据对象的通用行为。6.1模板概述模板是支持参数化程序设计的工具,实现参数的多态性将程序要处理的对象的类型参数化,使程序可以处理不同类型的对象;C++提供两种模板机制:函数模板类模板6.2函数模板考虑求两参数之中大值函数:max(a,b)对a,b的不同类型,都有相同的处理形式:return(a>b)?a:b;用已有方法解决对不同数据类型处理:(1)宏替换#definemax(a,b)(a>b?a:b)问题避开类型检查(2)重载问题需要许多重载版本(3)使用函数模板6.2函数模板重载函数通常基于不同的数据类型实现类似操作;

3、对不同数据类型的操作完全相同,用函数模板实现更为简洁方便;C++提供的函数模板可定义一个对任何类型变量进行操作的函数,从而大大增强了函数设计的通用性。intmax(inta,intb);intmax(chara[],charb[]);…….Boxmax(Boxa,Boxb);templateTmax(Ta,Tb){returna>b?a:b;}return(a>b)?a:b;template<类型形式参数表>声明模板中使用的类型参数。形式:6.2.1模板说明类型形式参数的形式为:typenameT1,ty

4、penameT2,……,typenameTn或classT1,classT2,……,classTn类型参数templatetemplatetemplatetemplateTmax(Ta,Tb){returna>b?a:b;}template<类型形式参数表>类型函数名(形式参数表){语句序列}函数模板定义由模板说明和函数定义组成。模板说明的类型参数必须在函数首部中至少出现一次函数参数表中也可以使用一般类

5、型参数.templateTmax(Ta[],intn)6.2.2函数模板定义templateTmax(Ta,Tb){returna>b?a:b;}#includetemplateTmax(Ta,Tb){returna>b?a:b;}voidmain(){cout<<"max(3,5)is"<

6、.5)is"<b?a:b;}由实参类型实例化charmax(chara,charb){returna>b?a:b;}doublemax(doublea,doubleb){returna>b?a:b;}编译器生成的模板函数程序执行时匹配不同的版本类型实参与类型形参必须严格匹配templateTmax(Ta,Tb){returna>b?a:b;}6.2.3函数模板参数匹配max(i1,i2

7、);//maxmax(c1,c2);//maxmax(i,c);//errormax(f,d);//errormax(str1,str2);//charstr1[10],str2[10]max(b1,b2);//Boxb1,b2;模板类型不能提供类型的隐式转换显式指定模板类型参数可以实现类型转换max(3,‘a’);max(f,d);intmax(inta,intb){returna>b?a:b;}寻找和使用最符合函数名和参数类型的函数;寻找一个函数模板,将其实例化产生一个匹配的模

8、板函数,若找到则调用它;寻找可以通过类型转换进行参数匹配的函数;如果按以上步骤均未能找到匹配函数,则调用错误。如果调用有多于一个的匹配选择,则调用匹配出现二义性。6.2.4重载函数模板templateTMax(constTa,constTb){retur

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

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

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