《模板和异常处理》PPT课件

《模板和异常处理》PPT课件

ID:40480070

大小:240.01 KB

页数:59页

时间:2019-08-03

《模板和异常处理》PPT课件_第1页
《模板和异常处理》PPT课件_第2页
《模板和异常处理》PPT课件_第3页
《模板和异常处理》PPT课件_第4页
《模板和异常处理》PPT课件_第5页
资源描述:

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

1、第9章模板和异常处理9.1函数模板9.2类模板9.3标准模板库(STL)9.4异常及其传统处理方法9.5使用C++异常处理9.6综合应用实例:栈类模板设计9.1函数模板在C++中,函数重载不仅方便用户对函数名的记忆,而且更主要的是完善了同一个函数的代码功能,给调用带来了方便。但函数重载并不能适应所有的数据类型,且同名函数过多,必然会造成代码量增加,程序可读性也会变差。为了解决这个问题,C++引入了模板来使函数中的数据类型进行参数化,使之成为函数模板,这样不仅能适应所有的数据类型,而且函数的代码也大为简化。在C++中,定义一个

2、函数模板是按下列一般格式进行:template//模板声明部分函数声明或定义//函数声明或定义部分从格式可以看出,函数模板的定义包括2个部分:一是模板(类型参数)声明部分,二是函数自身声明或定义部分。其中:(1)template是C++关键字,表示声明的是模板。(2)由一对“<>”尖括号构成的是该模板的类型参数表,类型参数表中可以有1个或多个类型参数,但多个类型参数之间需用逗号“,”分隔。(3)每个类型参数可以是由C++关键字class和类型名来组成,也可以是由一般具体类型和

3、类型名来组成,其中的类型名一定要符合C++命名规则。例如:template//ATsum(Tx,Ty){returnx+y;}9.1.1函数模板定义类型参数表9.1.1函数模板定义则将函数sum定义成了一个函数模板。在该函数模板的模板声明部分中,声明了一个通用类型名T,T又称为模板类型参数。需要说明的是:(1)在类型参数声明中,由于class又是类声明的关键字,为了避免混淆,在ANSI/ISOC++中,往往将class关键字用typename关键字来代替。也就是说,A可写成下列代码:template

4、nameT>(2)函数模板的定义可像函数那样按声明和实现两个部分分开进行:template//第1部分:函数模板原型声明T1sum(T1x,T1y);…template//第2部分:函数模板实现T2sum(T2x,T2y){returnx+y;}从中可以看出,函数模板声明和实现的格式与普通函数的声明和实现基本相同。所不同的是,函数模板的声明和实现时必须在函数头前面加上模板声明部分。(3)对于在模板声明部分中声明的类型名来说,若模板声明部分是在函数模板原型声明前面,则类型名的作用域仅在函数模

5、板原型范围中;若模板声明部分是在函数模板定义或实现前面,则类型名的作用域是该函数的作用域范围。正因为如此,函数模板原型声明中的所声明的类型名可以和函数模板实现时声明的类型名不一样,如前面的T1和T2。9.1.2函数模板实例化一旦函数模板定义后,就可以用它来生成各种具体的函数,称为模板函数。在函数调用时,用函数模板生成模板函数的过程,实际上就是将模板参数表中的参数化类型根据实参实例化成具体类型的过程,这个过程称为函数模板的实例化(Instantiation)过程。函数模板的实例化可分为隐式实例化和显式实例化,下面分别说明。1.

6、隐式实例化先来看一个示例:定义的函数模板sum用来求任何合法类型数据之和,T1和T2是该函数模板的两个参数化类型。具体程序如下:[例Ex_FunTemplate]使用函数模板#includeusingnamespacestd;template//定义函数模板T1sum(T1x,T2y){returnx+y;}intmain(){cout<

7、2,5.5)<”声明2个通用类型名称T1和T2,其中T2作为函数模板中形参的一个类型,而T1既是用于定义形参时的类型,又是用于函数返回值的类型。也就是说,实例化函数返回值的数据类型和第1个实参类型相同。(2)当sum(2,'a')时,因实参2是整型int,因此编译将T1=int,返回值也是整型int,结

8、果为99。类似的,当sum('a',2)时,因实参'a'是char型,因此编译将T1=char,返回值也是char,结果为字符'c'。可见,sum(2,'a')和sum('a',2)返回的结果是不一样的,前者为整型,而后者为字符型。同样可以分析,sum(2.2,5.5)返回的结果是doub

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

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

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