版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第13章章 模板模板 内容提要n本章主要引见模板的根本概念,引见运本章主要引见模板的根本概念,引见运用模板的必要性,模板的分类。用模板的必要性,模板的分类。n重点引见函数模板的定义、函数模板的重点引见函数模板的定义、函数模板的运用以及函数模板的重载。运用以及函数模板的重载。n引见类模板的定义方法和类模板的调用引见类模板的定义方法和类模板的调用方法。方法。 模板的根本概念n所谓模板,就是将某段程序中的数据类型参数化,使得它可以处置某个范围内的数据类型n而不用为每种能够的类型都建立一个实例,从而防止了反复劳动,加强了程序的灵敏性和有效性。 运用模板的必要性 nC+中的模板提供了重用源代码的方法。
2、例如,设计一个求两参数最大值的函数,不运用模板时,需求定义四个函数:nint max (int a , int b) return( a b ) ? a , b; nlong max ( long a , long b ) return ( a b ) ? a , b; ndouble max( double a , double b) return ( a b) ? a , b;nchar max( char a , char b ) return( a b) ? a , b; n假设运用模板,那么只需求定义一个函数:nTemplatetype max(type a , type b)nre
3、turn( a b) ? a , b; 运用模板的必要性运用模板的必要性案例称号:运用模板的必要性案例称号:运用模板的必要性程序称号:程序称号:proj13_01.cppproj13_01.cpp#include #include template template T max(T a, T b)T max(T a, T b) return a b ? a : b; return a b ? a : b; void main()void main() cout max(20, 30) = max(20, 30) endl; cout max(20, 30) = max(20, 30) endl
4、; cout max(t, v) = max(t, v) endl; cout max(t, v) = max(t, v) endl; cout max(10.1, 15.2) = max(10.1, 15.2) endl; cout max(10.1, 15.2) = max(10.1, 15.2) endl; 模板的分类 nC+程序由类和函数组成,模板也分为类模板class template和函数模板function template。n在阐明了一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认能否匹配函数模板中对应的形参,然后生成一个重载函数。该重载函数的定义
5、体与函数模板的函数定义体一样,它称之为模板函数template function。同样,在阐明了一个类模板之后,可以创建类模板的实例,即生成模板类。函数模板 n函数模板的定义方法是:ntemplate n ( )n n其中,template是关键字,模板参数表用一对尖括号括起来,内有一个或多个模板参数,不能为空。运用函数模板 案例称号:运用函数模板案例称号:运用函数模板程序称号:程序称号:proj13_02.cppproj13_02.cpp#include #include template template T min(T a , int n)T min(T a , int n) int i
6、;int i;T minv = a0;T minv = a0;for(i = 1 ; i n ; i+)for(i = 1 ; i ai)if(minv ai)minv = ai;minv = ai; return minv;return minv; void main()void main() int a=1,3,0,2,7,6,4,5,2;int a=1,3,0,2,7,6,4,5,2;double b=1.2,-3.4,6.8,9,8;double b=1.2,-3.4,6.8,9,8;coutacouta数组的最小值为:数组的最小值为: min(a,9) endl;min(a,9) e
7、ndl;coutbcoutb数组的最小值为:数组的最小值为: min(b,4)endl; min(b,4)endl; 函数模板的重载 案例称号:运用函数模板案例称号:运用函数模板程序称号:程序称号:proj13_03.cppproj13_03.cpp#include #include template template T min(T x, T y) T min(T x, T y) coutcout y ? y : x;return x y ? y : x; template template T min(T a , int n)T min(T a , int n) int i;int i;T
8、 minv = a0;T minv = a0;for(i = 1 ; i n ; i+)for(i = 1 ; i ai)if(minv ai)minv = ai;minv = ai; coutcout调用调用min(T a, int n),min(T a, int n),最小值为最小值为;return minv;return minv; void main()void main() int x = 8, y = 23;int x = 8, y = 23;double a5 = 2.342, 11.346, 8.93, 18.111 , 5.930;double a5 = 2.342, 11.
9、346, 8.93, 18.111 , 5.930;cout min(x,y) endl;cout min(x,y) endl;cout min(a , 5) endl;cout min(a , 5) endl; 类模板 n类模板和函数模板的定义格式根本一样ntemplate n class n n n ;n其中,template是关键字,模板参数表用一对尖括号括起来,内有一个或多个模板参数,不能为空。运用类模板 案例称号:运用类模板案例称号:运用类模板程序称号:程序称号:proj13_04.cppproj13_04.cpp#include #include #include #include
10、 using namespace std;using namespace std;template template class Array class Array public:public:Array(T a, T b)Array(T a, T b) x = a;x = a;y = b;y = b; T sum()T sum() T tempsum = x + y;T tempsum = x + y;return tempsum;return tempsum; private:private: T x; T x;T y;T y;void main() void main() Array A
11、 (7.0 , 6.0);Array A (7.0 , 6.0);cout Acout A的元素之和为的元素之和为 A.sum()endl; A.sum()endl;Array B (1.0 , 6.0 );Array B (1.0 , 6.0 );cout Bcout B的元素之和为的元素之和为 B.sum()endl; B.sum()endl; 小结n模板是模板是C+C+的重要语法特征。本章需求了解运的重要语法特征。本章需求了解运用模板的必要性,运用模板可以提高代码的重用模板的必要性,运用模板可以提高代码的重用性的缘由。用性的缘由。n熟习模板分成两大类:函数和类模板。熟练掌熟习模板分成两大
12、类:函数和类模板。熟练掌握函数模板的定义和运用以及如何运用函数模握函数模板的定义和运用以及如何运用函数模板重载。板重载。n熟练掌握类模板的定义和运用。熟练掌握类模板的定义和运用。 本章习题n1、模板参数表中参数运用的符号分隔是、模板参数表中参数运用的符号分隔是_。nA) , B) ;nC) / D) 以上都不是以上都不是n2、类模板规定了如何创建一个、类模板规定了如何创建一个_。nA) 对象对象 B) 类类nC) 实例实例 D) 变量变量n3、类模板的模板参数、类模板的模板参数_。nA) 只可以作为数据成员的类型。只可以作为数据成员的类型。 B) 只可以作为成员函数的前往类型只可以作为成员函数的前往类型nC) 只可以作为成员函数参数类型只可以作为成员函数参数类型 D) 以上都可以以上都可以n4、以上对模板的声明,正确的选项是、以上对模板的声明,正确的选项是_。nA) template B) template class T1, T2)nC) templateclass T1, class T2) D) template class T1; class T2)n5、有类模板定义如下:、有类模板定义如下:ntemplate nclass Dream nn;n以下类对象定义中,正确的选项是以下类对象定义中,正确的选项是_。nA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国特浓咖啡粉囊行业销售模式及投资前景预测报告
- 2024-2030年中国沙发垫产业未来发展趋势及投资策略分析报告
- 2024-2030年中国汽车用铅酸蓄电池行业发展前景预测及未来投资策略建议报告
- 2024-2030年中国水运行业发展形势及投资前景展望报告
- 2024-2030年中国水层网行业市场运营模式及未来发展动向预测报告
- 2024-2030年中国氧指数分析仪行业市场发展趋势与前景展望战略分析报告
- 2022年大学中医学专业大学物理二开学考试试题C卷-附解析
- 2022年大学药学专业大学物理二期中考试试卷B卷-附解析
- 2023年高考全一轮微专题02-地方时和区时的计算(解析版)
- 个人感谢信范文汇编9篇
- 第八章旅游体验
- 人教版(2024)七年级英语上册教学课件Unit 3 Lesson 6 Reading Plus
- 第4章 跨境电商选品与定价
- 中医科研思路
- 中医创新项目
- 《犯罪心理学(马皑第3版)》章后复习思考题及答案
- 青骄第二课堂2021年禁毒知识答题期末考试答案(初中组)
- 《中华人民共和国监察法》知识测试题库
- 《城市轨道交通桥梁养护技术规范》
- 《水土保持技术》课件-项目八 拦渣措施
- 机动车检测站违规检验整改报告
评论
0/150
提交评论