- 1、本文档共46页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 模板.ppt
第七章 模板与标准模板库 所谓模板是一种使用无类型参数来产生一系列函数或类的机制,是C++的一个重要特性。它的实现,方便了更大规模的软件开发。 7.1模板的基本知识 为什么要引入模板 例如:假定x、y的类型相同,现欲求x、y中的较大值。 函数重载: int max(int a,int b){return(ab)?a:b;} double max(double a,double b){return(ab)?a:b;} char max(char a,char b){return(ab)?a:b;} 若使用模板,则只定义一个函数: Templateclass T T max( T a,T b) { return(ab)?a,b; } 7.1模板的基本知识 问题 函数重载: 要书写大量代码,使程序变得臃肿难读 函数模板: 既可避免书写大量代码,又能利用编译程序提供的类型检查机制。 7.1模板的基本知识 C++程序由类和函数组成,模板也分为类模板(class template)和函数模板(function template)。 7.1.1函数模板 函数模板说明 函数模板的一般说明形式如下: template class 类参数1,…,class 类参数n 返回值类型 函数名(函数模板形参表) { //函数定义体 } 例1:编写一个对具有n个元素的数组a[ ]求最小值的程序,要求将求最小值的函数设计成函数模板。 #include iostream using namespace std; template class T T min(T a[ ],int n) { int i; T minv=a[0]; for(i=1;in;i++) if(minva[i]) minv=a[i]; return minv; } 注意: 模板函数有一个特点,虽然模板参数T可以实例化成各种类型,但是采用模板参数T的各参数之间必须保持完全一致的类型。模板类型并不具有隐式的类型转换,例如在int与char之间、float与int之间、float与double之间等的隐式类型转换。而这种转换在C++中是非常普遍的。 函数模板的优点: 函数模板方法克服克服了C++函数重载用相同函数名字重写几个函数的繁琐。因而,函数模板是C++中功能最强的特性之一,是提高软件代码重用率的重要手段。 7.2 类模板 类模板与函数模板类似,它可以为各种不同的数据类型定义一种模板,在引用时使用不同的数据类型实例化该类模板,从而形成一个类的集合。 类模板 类模板说明的一般形式是: template class 类型参数1,…,class 类型参数n class 类名 { //类说明体 }; template class 类型参数1,…,class 类型参数n 返回类型 类名 类型参数1,…,类型参数n ::成员函数1(形参表) { //成员函数定义体 } ……….. template class 类型参数1,…,class 类型参数n 返回类型 类名 类型参数1,…,类型参数n ::成员函数n(形参表) { //成员函数定义体 } 类模板 类模板 类模板 7.1.2 参数表中的模板类 7.1.3 模板的函数式参数 7.2.7 断言 7.2.7 断言 7.3 标准模板库STL (Standard Template Library) STL是由Alexander Stepanov(STL之父)、David R Musser和Meng Lee三位大师共同发展,于1994年被纳入C++标准程序库。 新的C++标准库中几乎每一样东西都是由模板(Template)构成的。 STL的不同实现版本 HP版本 P.J. Plauger 版本(被vc++采用) Rouge Wave版本(被c++Builder采用) STL port版本 SGI STL 版本(被GCC采用) 参考文献 STL源码剖析 候捷 华中科技大学出版社 C++ Primer(第三版 ) 潘爱民等译 Effective C++(第二版) 侯捷译 More Effective C++ 侯捷译 深度探索C++对象模型 侯捷译 泛型编程与STL 侯捷译 C++ STL 程序员开发指南 彭木根等箸 设计模式:可复用面向对象软件的元素 李英军等译 C++设计新思维 侯捷等译 7.3 标准模板库STL STL提供六大组件:? 容器(co
您可能关注的文档
- 时域离散随机信号处理-第3章.ppt
- 英语国家社会与文化入门PPT(一)52746.ppt
- 智能优化-遗传算法-2009.ppt
- 第一编 习题.ppt
- 数字对讲机较模拟对讲机的优点.ppt
- 自动化学科概论首页.ppt
- 喜看东方巨龙在腾飞.ppt
- 《中国近现代史纲要》(第九章)ABB.ppt
- 第九章 物流信息管理05921.ppt
- 2010高考复习英语句子概论.ppt
- 汽车发动机螺旋衬簧铸铁油环技术条件.pdf
- 生猾皮检验方法.pdf
- 2025年四川省资阳市安岳县高三下学期数学基础题、中档题型强化训练.docx
- 2025年四川省资阳市乐至县高三一模数学试卷及答案.docx
- 2025年四川省自贡市贡井区高三下学期数学基础题、中档题型强化训练.docx
- 2025年四川省自贡市荣县高三下学期数学基础题、中档题型强化训练.docx
- 2025年四川省资阳市安岳县高三一模数学试卷及答案.docx
- 2025年四川省自贡市荣县高三英才班下学期数学限时训练试题.docx
- 核电厂安全级电气设备和系统文件标识方法.pdf
- 2025年四川省自贡市大安区高三英才班下学期数学限时训练试题.docx
文档评论(0)