- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 模板(Templates)
7.1 模板的概念(Templates Concept)
7.2 函数模板与模板函数
(Function Template and Template Function)
7.3 类模板与模板类
(Class Template and Template Class)
7.4 标准模板库STL(Standard Template Library)
7.5 常见编程错误(Common Programming Errors)
本章小结(Chapter Summary)
习题7(Exercises 7)
第7章 模板(Templates)
7.1 模 板 的 概 念
(Templates Concept)
模板是C++ 语言的一个重要特性。模板使得程序员能
够快速建立具有类型安全的类库集合和函数集合,是通用程
序设计的利器。它的实现,提供了重用程序源代码的有效方
法,方便了更大规模的软件开发。
第7章 模板(Templates)
但宏定义有两个问题,一是它避开了类型检查,在某些
情况下,会导致不同类型参数之间的比较,引起错误;二是
可能在不该替换的地方进行了替换,如:
class A
{
int max(int x,int y);
// …
}
第7章 模板(Templates)
同样,在声明了一个类模板之后,可以创建类模板的实
例,它称为模板类。类模板与模板类的区别是:类模板是一
个模板,不是一个实实在在的类,其中用到通用类型参数;
而模板类是一个类,可以由它定义对象。
模板经过实例化后就得到模板函数或模板类,模板函数
或模板类再经过实例化后就得到对象。模板、模板类、对象
和模板函数之间的关系如图7-1所示。
第7章 模板(Templates)
图7-1 模板、模板类、对象和模板函数之间的关系
第7章 模板(Templates)
7.2 函数模板与模板函数
(Function Template and Template Function)
7.2.1 函数模板的声明
(Declaration of Function Template)
为了定义函数模板或类模板,首先要进行模板说明,其
作用是说明模板中使用的类属参数。函数模板可以用来创建
一个通用的函数,以支持多种不同的形参,避免重载函数的
函数体重复设计。它的最大特点是把函数使用的数据类型作
为参数。
第7章 模板(Templates)
函数模板的声明形式为:
templatetypename类型形参表
返回类型 函数名(参数表)
{
函数体
}
第7章 模板(Templates)
例如:
templatetypename T
T fuc(T x, int y)
{
T x;
// …
}
第7章 模板(Templates)
如果主调函数中有以下语句:
double d;
int a;
fuc(d,a);
则系统将用实参d 的数据类型double去代替函数模板中的
T生成函数:
double fuc(double x,int y)
{
double x;
// …
}
第7章 模板(Templates)
7.2.2 函数模板(Function Template)
函数模板定义由模板说明和函数定义组成。所有在模板
说明
您可能关注的文档
- C++面向对象程序设计 曹静 教学课件 第01章 面向对象程序设计概述.pdf
- C++面向对象程序设计 曹静 教学课件 第02章 C++语言基础.pdf
- C++面向对象程序设计 曹静 教学课件 第04章 类与对象.pdf
- C++面向对象程序设计 曹静 教学课件 第10章 项目设计——校园信息管理系统.pdf
- C++面向对象程序设计 教学课件 陈维兴 陈昕 C++邮电 2.pdf
- C++面向对象程序设计 教学课件 陈维兴 陈昕 C++邮电 3.pdf
- C++面向对象程序设计 教学课件 陈维兴 陈昕 C++邮电 4.pdf
- C++面向对象程序设计 教学课件 陈维兴 陈昕 C++邮电 5.pdf
- C++面向对象程序设计 教学课件 李兰_ 第2章.pdf
- C++面向对象程序设计 教学课件 李兰_ 第3章.pdf
文档评论(0)