函数模板和函数重载算例-Read.PPTVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
函数模板和函数重载算例-Read

模板是 C++语言在20世纪80年代末引进的。原 先模板视为对包容类如链表和向量类的有力支撑,进 来更跃升为标准模板库(standard template library or STL)通用程序设计的厚实基石. 模板语法表面虽 然变幻多端,但其内涵是非常简单的,模板是编译 器许可 (complier-approved) 的宏,这些强大的宏 中包括一些数据类型名作为替换参数。 一、模板的概念和方法 二、函数模板 三、函数模板和函数重载算例 四、非模板的重载函数 五、类模板 六、类模板的默认参数 一、模板的概念和方法 许多算法表现了本质的雷同性,如数组的排序计算,对 于short型数据需要编写一套排序插入删除的算法,对于 double型又要重复相似的过程,当然知其一很容易变化到其 二。 有鉴于此C++允许类型作为变动的要素,简化程序的手 工切换工作。 模板将数据类型作为参数出现在通用的算法描述中,作 为参数的类名简称为类参,类参的个数没有限制,类参的命 名遵循标识符的规定。类参既可替换为内置的数据类型如 float,int等,也可替换为类类型名、结构名和联合名。 基于一般的惯例类参的名称常写为type1,type2,...typen 或T1,T2,...,TN。类参在模板的描述中出现的位置也就是原 来具体类名如long,short,类类型名CType等所在的位置。 类名之后空格分隔的名称理解为内存的标识名或形参。 模板表现了源代码的直接替换,变动的基本因素是量度 数据大小的尺度即数据类型。 设type为类参,type替换为short对应short变量的数据 处理,type替换为long则专门应付long型的数据流动。 如此通用程序设计方法油然而生。 模板首先得进行声明。 模板的声明中包含带参的类名,这些类名的实在化在其 后的阶段才得以实施。 因此对于一个带参的模板声明,编译器能扫描到有限的 错误,在特定类参具体的实现点,编译器会捕获更多的错 误,直到反复调试错误减至最少。 代码重用存在许多途径,模板的代码重用机制是C语言 宏展开的自然发展。 宏展开的一套文本替换算法从预处理阶段搬移到编译阶 段,结合函数重载中的一套类型匹配搜寻算法一起就诞生了 模板的内在运作机制,这是编译软件人员代码的重用。 模板表现了源代码的直接替换,变动的基本因素是量度 数据大小的尺度即数据类型。设type为类参,type替换为 short对应short变量的数据处理,type替换为long则专门应 付long型的数据流动。如此通用程序设计方法油然而生。 模板首先得进行声明。模板的声明中包含带参的类名, 这些类名的实在化在其后的阶段才得以实施。 代码重用存在许多途径,模板的代码重用机制是C语言 宏展开的自然发展。宏展开的一套文本替换算法从预处理阶 段搬移到编译阶段,结合函数重载中的一套类型匹配搜寻算 法一起就诞生了模板的内在运作机制,这是编译软件人员代 码的重用。 二、函数模板 函数模板是关于通用函数的数据类型作为可变参量的算 法描述。 1. 函数模板的机制 函数模板的机制介于函数重载和带参的宏定义之间,函 数模板和宏一样只有一个描述,宏定义是描述的就地扩展, 函数模板尚需进行类似于函数重载涉及的类型安全匹配较 检,不同的实参的类型对应函数模板诞生不同的版本。每一 单独的函数版本称为函数模板的具体实现, 一个函数模板潜 在对应多个具体实现。 2. 函数模板的声明 函数模板的声明通过关键字template开始,该关键字 之后是尖括号括起来的带类型参量的列表或模板类参表, 每一类参前放置关键字class或typename修饰,说明随后的 名称是类名参量,至少存在一个类参。 新添关键字typename专门引进来减轻class的负担,但 class由于键入的字符少历史悠久,一直是模板格式的主流 用法。本课件以class为主阐述模板的格式,简单地以两个 类参为例进行说明如下: template class T1, typename T2 ret_type function (T1 v1,long a,T2 v2,... ) { 函数模板的定义体语句; } 对于函数模板,类参T1,T2必须至少在函数模板名 fucti

文档评论(0)

ailuojue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档