欢迎来到天天文库
浏览记录
ID:50350245
大小:1.07 MB
页数:182页
时间:2020-03-08
《C++面向对象程序设计 教学课件 作者 李兰_第7章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、7.1模板的概念(TemplatesConcept)7.2函数模板与模板函数(FunctionTemplateandTemplateFunction)7.3类模板与模板类(ClassTemplateandTemplateClass)7.4标准模板库STL(StandardTemplateLibrary)7.5常见编程错误(CommonProgrammingErrors)本章小结(ChapterSummary)习题7(Exercises7)模板是C++语言的一个重要特性。模板使得程序员能够快速建立具有类型
2、安全的类库集合和函数集合,是通用程序设计的利器。它的实现,提供了重用程序源代码的有效方法,方便了更大规模的软件开发。7.1模 板 的 概 念(TemplatesConcept)但宏定义有两个问题,一是它避开了类型检查,在某些情况下,会导致不同类型参数之间的比较,引起错误;二是可能在不该替换的地方进行了替换,如:classA{intmax(intx,inty);//…}同样,在声明了一个类模板之后,可以创建类模板的实例,它称为模板类。类模板与模板类的区别是:类模板是一个模板,不是一个实实在在的类,其
3、中用到通用类型参数;而模板类是一个类,可以由它定义对象。 模板经过实例化后就得到模板函数或模板类,模板函数或模板类再经过实例化后就得到对象。模板、模板类、对象和模板函数之间的关系如图7-1所示。图7-1模板、模板类、对象和模板函数之间的关系7.2.1函数模板的声明(DeclarationofFunctionTemplate)为了定义函数模板或类模板,首先要进行模板说明,其作用是说明模板中使用的类属参数。函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计。它的最大特
4、点是把函数使用的数据类型作为参数。7.2函数模板与模板函数(FunctionTemplateandTemplateFunction)函数模板的声明形式为:template<返回类型><函数名>(参数表){函数体}例如:templateTfuc(Tx,inty){Tx;//…}如果主调函数中有以下语句:doubled;inta;fuc(d,a);则系统将用实参d的数据类型double去代替函数模板中的T生成函数:doublefuc(doubl
5、ex,inty){doublex;//…}7.2.2函数模板(FunctionTemplate)函数模板定义由模板说明和函数定义组成。所有在模板说明的类属参数必须在函数定义中至少出现一次。函数参数表中可以使用类属类型参数,也可以使用一般类型参数。7.2.3模板函数(TemplateFunction)函数模板是对一组函数的描述,它以类型作为参数及函数返回值类型。它不是一个实实在在的函数,编译时并不产生任何执行代码。当编译系统在程序中发现有与函数模板中相匹配的函数调用时,便生成一个重载函数。该重载函数
6、的函数体与函数模板的函数体相同,参数为具体的数据类型。我们称该重载函数为模板函数,它是函数模板的一个具体实例。【例7-1】求两个数之中的大值。程序如下://ex7_1.cpp//Max.h#include#includeusingnamespacestd;#ifndefMAX_H#defineMAX_HtemplateTMax(Ta,Tb){returna>b?a:b;}#endifvoidmain(){inta,b;
7、cout<<"Entertwointeger:";cin>>a>>b;cout<<"Max("<>x>>y;cout<<"Max("<>c>>d;cout<<"Max("<8、")="<>g>>f;cout<<"Max("<
8、")="<>g>>f;cout<<"Max("<
此文档下载收益归作者所有