模板泛型编程基础.ppt

模板泛型编程基础.ppt

ID:56433841

大小:130.50 KB

页数:39页

时间:2020-06-18

模板泛型编程基础.ppt_第1页
模板泛型编程基础.ppt_第2页
模板泛型编程基础.ppt_第3页
模板泛型编程基础.ppt_第4页
模板泛型编程基础.ppt_第5页
资源描述:

《模板泛型编程基础.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第06章模板泛型编程基础本章内容安排什么是模板函数模板类模板通用数组类UniversalArray雇员管理系统版本6(基于模板)2引入问题问题:多个函数的参数个数相同,处理代码雷同,但处理的数据类型不同解决方案一:为不同函数设置不同的名字intimax(inta,intb){returna>b?a:b;}longlmax(longa,longb){returna>b?a:b;}doubledmax(doublea,doubleb){returna>b?a:b;}存在多个函数版本,代码重复,函数命名复杂混乱,客户代码难以使用。3引入问题解决方案二:函数

2、重载intmax(inta,intb){returna>b?a:b;}longmax(longa,longb){returna>b?a:b;}doublemax(doublea,doubleb){returna>b?a:b;}解决函数命名问题,多个函数有统一命名,但代码冗余,存在多个雷同的实现,维护的代价高。4解决之道:模板技术模板技术:将函数参数类型提取出来作为“类型参数”,通过创建通用的函数模板,避免函数体的重复定义。模板技术适用与类模板,将类中所处理的数据类型提取出来作为“类型参数”,创建通用的类模板。5本章内容安排什么是模板函数模板类模板模板

3、应用实例通用数组类UniversalArray雇员管理系统版本6(基于模板)6定义函数模板templateT&max(Tconst&a,Tconst&b){returnaintmain(){std::cout<

4、’;charc2=‘b’;std::cout<和max2个版本函数,如果客户程序中不调用max,则可能不生成任何函数实例。8函数模板与模板函数在编译阶段,编译器根据函数调用时实参的类型以及函数模板,生成实际的函数定义,再进行编译。函数模板:通用的函数模板,支持类型参数化,是产生实际函数定义的模板。模板函数:调用函数时根据实参的类型,编译器生成函数实例并

5、对其进行编译。9编译器生成的函数实例intmax(intconst&a,intconst&b){returna(charconst&a,charconst&b){returnaT&max(Tconst&a,Tconst&b){returna

6、2);当编译器无法推断类型参数时,就会出现二义性,从而报错。4是int型,4.2是double类型,无法决定T的类型。X11显式指定模板参数类型templateT&max(Tconst&a,Tconst&b){returna(4,7);max(4,4.2);在可能出现二义性的情况下,显式指定模板那参数类型,是一种良好编程习惯。12本章内容安排什么是模板函数模板类模板通用数组类UniversalArray雇员管理系统版本6(基于模板)13类模板的定义template

7、T>classExam{public:voidsetValue(Tconst&value);TgetValue()const;private:Telems;};Exam并不是一个真正的类,只是一个类模板(生成类定义的骨架),类中数据成员和部分成员函数参数的类型还没有确定,并以模板并没有定义任何类。标志模板的开始,同时指定模板中使用的类型参数14类模板的定义templatevoidExam::setValue(constT&value){elems=vlaue;}templateTExam::ge

8、tValue()const{returnelems;}类作用域限定符不再是Exam,Exam不是真正的类,真

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

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

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