1 / 32
文档名称:

软件技术基础作业—模板编程.pptx

格式:pptx   大小:218KB   页数:32页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

软件技术基础作业—模板编程.pptx

上传人:niuww 2022/10/27 文件大小:218 KB

下载得到文件列表

软件技术基础作业—模板编程.pptx

文档介绍

文档介绍:该【软件技术基础作业—模板编程 】是由【niuww】上传分享,文档一共【32】页,该文档可以免费在线阅读,需要了解更多关于【软件技术基础作业—模板编程 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。函数、类模板
《软件技术基础》补充2
电子科技大学物理电子学院
赖生建
主要内容
模板的概念
函数模板
类模板
《软件技术基础》补充2—模板******@
2
1模板的概念
模板的引入
《软件技术基础》补充2—模板******@
3
classCompare_int
{
public:
Compare(inta,intb)
{x=a;y=b;}
intmax()
{return(x>y)?x:y;}
intmin()
{return(x<y)?x:y;}
private:
intx,y;
};
classCompare_float
{
public:
Compare(floata,floatb)
{x=a;y=b;}
floatmax()
{return(x>y)?x:y;}
floatmin()
{return(x<y)?x:y;}
private:
floatx,y;
}
这两个类的功能是对两个整数(浮点数)作比较,可以通过调用成员函数max和min得到两个整数中的大者和小者。
两个或多个类,其功能是相同的,仅仅是数据类型不同,能否有办法减少重复性的工作?
1模板的概念
《软件技术基础》补充2—模板******@
4
C++在发展的后期增加了模板(template)的功能,提供了解决这类问题的途径。可以声明一个通用的类模板,它可以有一个或多个虚拟的类型参数。如对以上两个类可以综合写出以下的类模板:
template<classnumtype>//声明一个模板,虚拟类型名为numtype
classCompare//类模板名为Compare
{
public:
Compare(numtypea,numtypeb)
{x=a;y=b;}
numtypemax()
{return(x>y)?x:y;}
numtypemin()
{return(x<y)?x:y;}
private:
numtypex,y;
};
1模板的概念
《软件技术基础》补充2—模板******@
5
请将此类模板和前面第一个Compare_int类作一比较,可以看到有两处不同:
(1)声明类模板时要增加一行:template<class类型参数名>
(2)原有的类型名int换成虚拟类型参数名numtype
在建立类对象时,如果将实际类型指定为int型,编译系统就会用int取代所有的numtype,如果指定为float型,就用float取代所有的numtype,这样就能实现“一类多用”。
如果说类是对象的抽象,对象是类的实例,则类模板是类的抽象,类是类模板的实例。
利用类模板可以建立含各种数据类型的类。
Compare<int>cmp(4,7);
即在类模板名之后在尖括号内指定实际的类型名,在进行编译时,编译系统就用int取代类模板中的类型参数numtype,这样就把类模板具体化了,或者说实例化了。
1模板的概念
《软件技术基础》补充2—模板******@
6
//
template<classnumtype>//声明一个模板,虚拟类型名为numtype
classCompare//类模板名为Compare
{
public:
Compare(numtypea,numtypeb)
{x=a;y=b;}
numtypemax()
{return(x>y)?x:y;}
numtypemin()
{return(x<y)?x:y;}
private:
numtypex,y;
};
#include<>
intmain()
{
Compare<int>cmp_i(4,7);
intimax=();
cout<<"Max:"<<imax<<endl;
Compare<float>cmp_f(,);
floatfmax=();
cout<<"Max:"<<fmax<<endl;
return1;
}
1模板的概念
模板概念
它可以实现类型参数化,即把函数或类中的数据类型定义为参数,从而解决参数多态性问题,实现代码可重用性
模板分类(按用途)
函数模板
类模板
参数实例化
指给函数模板或类模板带入实际的类型参数
C++中把经过参数实例化的函数模板称为模板函数,把经过参数实例化的类模板称为模板类
《软件技术基础》补充2—模板******@
7
1模板的概念
模板、模板函数、模板类和对象之间的关系
《软件技术基础》补充2—模板******@
8
模板
函数模板
类模板
模板函数
模板类
对象
对象
对象
参数实例化
参数实例化
2函数模板
函数模板的定义
《软件技术基础》补充2—模板******@
9
一般定义格式:
template<模板参数表>
返回类型函数名(函数模板形参表)
{
函数体
}
设计一个求两个数中较大数的函数模板
template<classT>
Tmax(Tx,Ty)
{
return(x>y)?x:y;
}
template<typenameT>
Tmax(Tx,Ty)
{
return(x>y)?x:y;
}
2函数模板
模板函数的生成(函数模板的实例化)
基本概念
函数模板在具体调用时必须进行参数实例化
经参数实例化而生成的具体函数称为模板函数
对模板形参进行实例化的参数称为模板实参
生成模板函数的方法
显式方法:在函数模板调用前,用基本数据类型或用户自定义数据类型对函数模板进行参数实例化,生成模板函数
《软件技术基础》补充2—模板******@
10
intmyIntX=5,myIntY=8,myIntC;
floatmyFloatX=,myFloatY=,myFloatC;
intmax(intx,inty);
myIntC=max(myIntX,myIntY);
floatmax(floatx,floaty);
myFloatC=max(myFloatX,myFloatY);

最近更新

冠状动脉搭桥手术后的家庭康复辅导 27页

全面了解脑卒中症状及紧急救援的培训大纲 26页

全科医学教育的学术研究与科研能力培养 28页

儿童学龄前期的故事与想象力发展 22页

儿科常见病诊断与治疗培训课件儿童尿路感染的.. 23页

促进医学生人文素质发展的校园文化建设策略 29页

北京市城市更新实施方案编制工作指南(试行).. 7页

2024年足球知识题库附答案(黄金题型) 12页

县乡教师选调考试《教师职业道德》题库及答案.. 44页

县乡教师选调进城考试《教育心理学》题库精品.. 120页

科普知识竞赛题库100道【夺冠系列】 18页

职业教育法考试题库含完整答案(精品) 26页

伍德灯在呼吸科疾病诊断中的临床应用 34页

河北最新规划方案 6页

水产种苗可行性研究报告 6页

李沁研究报告 5页

智能网卡研究报告 7页

新闻采访实施方案 6页

交通安全教育培训课件驾驶行为规范与交通法规.. 16页

互联网家居产品创业计划书 34页

买东西的学问 23页

童装销售商业计划书 7页

《跟踪台风的卫星》教学设计 13页

社区工具共享商业计划书 8页

临床医学专业认证自评报告解读医学质量管理和.. 26页

中药热奄包提高性功能的效果评价 26页

建立部门联动协调工作机制4篇 7页

06MS201-1混凝土排水管道基础及接口 46页

工行新一代票据系统企业信息报备流程 4页

《陈情表》课件(共93张PPT) 93页