C++面向对象程序设计 教学课件 ppt 作者 陈维兴 陈昕 C++邮电-8
28页1、,第8章 模 板 8.1 模板的概念 8.2 函数模板 8.3 类模板,本章主要内容,8.1 模板的概念 定义求最大值函数max(): int max(int x,int y) return (xy)?xy; float max(float x,float y) return (xy)?xy; double max(double x,double y) return (xy)?xy;,这些函数的功能都是相同的,只是参数类型和函数返回类型不同,问题:能否将这些函数合起来,只写一个通用函数呢?,解决这个问题的方法: 使用模板 模板是实现代码重用机制的一种工具, 它把类型定义为参数,实现类型参数化。 调用时,T 可以分别取为int 、float 、double,把类型定义为参数,如下所示: T max(T x,T y) return (xy)?xy; ,类型参数,int max(int x,int y) return (xy)?xy; float max(float x,float y) return (xy)?xy; double max(double x,double y) return
2、 (xy)?xy;,把类型定义为参数,如下所示: T max(T x,T y) return (xy)?xy; ,类型参数,调用时,T取int,调用时,T取float,调用时,T取double,函数模板 模板 类 模 板,8.2 函数模板 8.2.1 函数模板的声明 函数模板可声明如下: 函数模板也可以定义成如下形式:,template 返回类型 函数名(模板形参表) 函数体 ,使用函数模板时, 类型参数必须实例化,即用实际的数据类型替代它。,template是一个声明模板的关键字,它表示声明一个模板。,template 返回类型 函数名(模板形参表) 函数体 ,例如,求最大值函数模板,如下所示: template T max(T x,T y) return (xy)?xy; 也可以定义成如下形式: template T max(T x,T y) return (xy)?xy;,T为类型参数,模板形参表,8.2.2 函数模板的使用 函数模板代表的是一类函数,使用时,类型参数必须实例化,即用实际的数据类型(既可以是系统预定义的标准数据类型(int 、float 、double等), 也可
3、以是用户自定义的类型)替代它。 将函数模板中的类型参数实例化的参数称为模板实参。 用模板实参实例化的函数称为模板函数。 当编译系统发现有一个函数调用: 函数名(模板实参表); 时,将根据模板实参表中的类型生成一个函数即模板函数。该模板函数的函数体与函数模板的函数体相同。,#include /例8.1 函数模板的使用。 using namespace std; template /模板声明,其中T为类型参数 T max(T a,T b) /定义函数模板,“T a,T b”为模板形参表 return (ab) ? a:b; int main() int i1=10, i2=56; double d1=50.344, d2=4656.346; char c1=k,c2=n; cout“较大的整数是:“max(i1,i2)endl; cout“较大的双精度型数是:“max(d1,d2)endl; cout“较大的字符是:“max(c1,c2)endl; return 0; ,类型参数T 将分别被类型int 、float 、double、char等取代,调用函数模板,此时T被char取代,调用函
4、数模板,此时T被double取代,调用函数模板,此时T被char取代,运行结果如下: 较大的整数是:56 较大的双精度型数是:4656.35 较大的字符是:n,可见:所谓函数模板,实际上是建立一个通用函数,其函数返回类型和形参类型不具体指定,用一个虚拟的类型来代表。函数模板经实例化而生成的具体函数称为模板函数。 函数模板代表了一类函数, 模板函数表示某一具体的函数。,说明: (1) 在函数模板中允许使用多个类型参数。但是应当注意template定义部分的每个类型参数前必须有关键字typename (或class )。 例8.3-1 建立了有两个类型参数的函数模板。 #include using namespace std; template void myfunc( type1 x, type2 y) coutx yendl; main() myfunc(10, “hao“); myfunc(0.123, 10L); return 0;,两个类型参数type1和type2,运行结果为: 10 hao 0.123 10,(2) 在template语句与函数模板定义语句之间不允许有别的语句
《C++面向对象程序设计 教学课件 ppt 作者 陈维兴 陈昕 C++邮电-8》由会员E****分享,可在线阅读,更多相关《C++面向对象程序设计 教学课件 ppt 作者 陈维兴 陈昕 C++邮电-8》请在金锄头文库上搜索。
逍遥游复习 知识点整理
近现代法德关系史 高三展示课3稿
当代大学生人生信仰及追求的调查研究
长相思 纳兰性德-ppt课件
课件:危机意识 一
英语ppt演讲关于阿甘正传
发达国家基础教育改革的动向与趋势 修改版
中国民间美术 课件.ppt
生物质发电技术与系统 课程ppt 第1章 生物质发电技术现状及发展趋势 2学时 -----2016
现代信号处理思考题 含答案
执业药师继续教育 抑郁症的药物治疗 100分
小学生的成长档案模板不用修改 万能型
增订六版 现代汉语 上册 第二章文字 思考与练习答案
国家财政ppt课件
加拿大英语介绍
六年级统计图的选择课件
中学生成长档案ppt
中国现代文学史期末复习整理
lohi和hihilo训练对女子赛艇运动员运动能力影响的比较研究
风雨贾平凹阅读答案
2024-03-21 39页
2024-03-21 41页
2024-03-21 40页
2024-03-21 34页
2024-03-21 33页
2024-03-21 35页
2024-03-21 21页
2024-03-21 45页
2024-03-21 33页
2024-02-20 85页