第13部分模板.ppt

上传人:本田雅阁 文档编号:3125595 上传时间:2019-07-13 格式:PPT 页数:14 大小:230.52KB
返回 下载 相关 举报
第13部分模板.ppt_第1页
第1页 / 共14页
第13部分模板.ppt_第2页
第2页 / 共14页
第13部分模板.ppt_第3页
第3页 / 共14页
第13部分模板.ppt_第4页
第4页 / 共14页
第13部分模板.ppt_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《第13部分模板.ppt》由会员分享,可在线阅读,更多相关《第13部分模板.ppt(14页珍藏版)》请在三一文库上搜索。

1、第13章 模板,1,3,内容提要,本章主要介绍模板的基本概念,介绍使用模板的必要性,模板的分类。 重点介绍函数模板的定义、函数模板的使用以及函数模板的重载。 介绍类模板的定义方法和类模板的调用方法。,模板的基本概念,所谓模板,就是将某段程序中的数据类型参数化,使得它能够处理某个范围内的数据类型 而不必为每种可能的类型都建立一个实例,从而避免了重复劳动,增强了程序的灵活性和有效性。,使用模板的必要性,C+中的模板提供了重用源代码的方法。例如,设计一个求两参数最大值的函数,不使用模板时,需要定义四个函数: int max (int a , int b) return( a b ) ? a , b;

2、 long max ( long a , long b ) return ( a b ) ? a , b; double max( double a , double b) return ( a b) ? a , b; char max( char a , char b ) return( a b) ? a , b; 如果使用模板,则只需要定义一个函数: Templatetype max(type a , type b) return( a b) ? a , b; ,使用模板的必要性,案例名称:使用模板的必要性 程序名称:proj13_01.cpp #include template T ma

3、x(T a, T b) return a b ? a : b; void main() cout “max(20, 30) = “ max(20, 30) endl; cout “max(t, v) = “ max(t, v) endl; cout “max(10.1, 15.2) = “ max(10.1, 15.2) endl; ,模板的分类,C+程序由类和函数组成,模板也分为类模板(class template)和函数模板(function template)。 在说明了一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中对应的形参,然后生成一

4、个重载函数。该重载函数的定义体与函数模板的函数定义体相同,它称之为模板函数(template function)。同样,在说明了一个类模板之后,可以创建类模板的实例,即生成模板类。,函数模板,函数模板的定义方法是: template ( ) 其中,template是关键字,模板参数表用一对尖括号括起来,内有一个或多个模板参数,不能为空。,使用函数模板,案例名称:使用函数模板 程序名称:proj13_02.cpp #include template T min(T a , int n) int i; T minv = a0; for(i = 1 ; i ai) minv = ai; return

5、 minv; void main() int a=1,3,0,2,7,6,4,5,2; double b=1.2,-3.4,6.8,9,8; cout“a数组的最小值为:“ min(a,9) endl; cout“b数组的最小值为:“ min(b,4)endl; ,函数模板的重载,案例名称:使用函数模板 程序名称:proj13_03.cpp #include template T min(T x, T y) cout y ? y : x; template T min(T a , int n) int i; T minv = a0; for(i = 1 ; i ai) minv = ai; c

6、out“调用min(T a, int n),最小值为“; return minv; void main() int x = 8, y = 23; double a5 = 2.342, 11.346, 8.93, 18.111 , 5.930; cout min(x,y) endl; cout min(a , 5) endl; ,类模板,类模板和函数模板的定义格式基本相同 template class ; 其中,template是关键字,模板参数表用一对尖括号括起来,内有一个或多个模板参数,不能为空。,使用类模板,案例名称:使用类模板 程序名称:proj13_04.cpp #include #i

7、nclude using namespace std; template class Array public: Array(T a, T b) x = a; y = b; T sum() T tempsum = x + y; return tempsum; private: T x; T y; ; void main() Array A (7.0 , 6.0); cout B (1.0 , 6.0 ); cout “B的元素之和为“ B.sum()endl; ,小结,模板是C+的重要语法特征。本章需要了解使用模板的必要性,使用模板可以提高代码的重用性的原因。 熟悉模板分成两大类:函数和类模板

8、。熟练掌握函数模板的定义和使用以及如何使用函数模板重载。 熟练掌握类模板的定义和使用。,本章习题,1、模板参数表中参数使用的符号分隔是_。 A) , B) ; C) / D) 以上都不是 2、类模板规定了如何创建一个_。 A) 对象 B) 类 C) 实例 D) 变量 3、类模板的模板参数_。 A) 只可以作为数据成员的类型。 B) 只可以作为成员函数的返回类型 C) 只可以作为成员函数参数类型 D) 以上都可以 4、以上对模板的声明,正确的是_。 A) template B) template class Dream ; 下列类对象定义中,正确的是_。 A) Dream a; B) Dream a; C) Dream a; D) Dream a;,本章习题,1、填写下面的空格,将程序代码补充完整。 template _min(T x, T y) cout“调用min(T x, T y),最小值为“; return _ 2、C+模板分为_和_。 3、本质上复合数据类型中的vector和_都是系统定义好的模板类。比如定义vector的时候,使用的语法是“_”。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1