网站大量收购闲置独家精品文档,联系QQ:2885784924

C++程序设计案例教程-PPT-new完整版课件全套ppt教学教程最全整套电子教案电子讲义.ppt

C++程序设计案例教程-PPT-new完整版课件全套ppt教学教程最全整套电子教案电子讲义.ppt

  1. 1、本文档共451页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
原创完整版课件全套ppt完整版电子课件完整版电子讲义完整版电子教案全套课件全套ppt教学教程

7.1 模板与泛型的概念 7.2 函数模板 7.3 类模板 7.4 复数运算器的设计与实现 7.5 本章小结 第7章 模板 返回目录 7.1 模板与泛型的概念 模板:提供了对逻辑结构相同的数据对象通用行为的定义 这些模板运算对象的类型不是实际的具体的数据类型,而是一种参数化的类型(又称为类属类型),也是就泛型参数 模板是一种使用无类型参数来产生一系列函数或类的机制 模板是C++支持参数化多态的工具 泛型编程:在算法中使用泛型参数以适应各种数据类型和数据结构 泛型编程简单地说就是使用模板的程序设计方法 分类 函数模板:带类属参数的函数 模板函数(template function) 类模板:带类属类数的类 模板类:带类属类数的类 返回目录 7.2.1 使用C++宏定义实现功能相似函数 C++函数模板的定义 7.2.2 C++函数模板的重载 7.2.3 7.2 函数模板 问题 1.假如设计一个求两参数最大值的函数,在实践中我们可能需要定义四个函数: int max ( int a , int b ) { return ( a b ) ? a , b ; } long max ( long a , long b ) { return ( a b ) ? a , b ;} double max ( double a , double b ) { return ( a b)? a , b ; } char max ( char a , char b ) { return ( a b ) ? a , b ;} 2.这些函数几乎相同,唯一的区别就是形参类型不同 3.需要事先知道有哪些类型会使用这些函数,对于未知类型这些函数不起作用 #define MAX(x,y)\ int max(int x,int y)\ {return (xy?x:y);} //#define MAX(x,y) (x)(y)?(x):y MAX(x,y) int main() { int a,b; int m; cinab; m=max(a,b); coutm=mendl; return 0; } 使用C++宏定义实现功能相似函数 存在问题: 不做类型检查 C++函数模板的定义 函数模板的一般说明形式如下: template 模板形参表 返回值类型 函数名(模板函数形参表) { //函数定义体 } 关键字template表示正在说明一个模板 模板形参表可以包含基本数据类型,也可以包含类类型 类型形参需要加前缀class。如果类型形参多于一个,则每个类型形参都要使用class。 模板函数形参表中的参数必须是惟一的,而且函数定义体中至少出现一次 函数模板定义不是一个实在函数,编译系统不为其产生任何执行代码。该定义只是对函数的描述,表示它每次能单独处理在类型形式参数表中说明的数据类型 程序举例:使用函数模板求两数最大值 #includeiostream.h templateclass T T max(T x ,T y) { return (xy)?x:y; } int main() { int i1=3,i2=4; float f1=12.5,f2=24.5; double d1=50.344,d2=4656.346; char c1=k,c2=n; coutthe max of i1,i2 is :max(i1,i2)endl; coutthe max of f1,f2 is :max(f1,f2)endl; coutthe max of d1,d2 is :max(i1,i2)endl; coutthe max of c1,c2 is :max(f1,f2)endl; return 0; } 模板函数 Max(c1,c2) (i1,i2为char) 实例化 实例化 实例化 实例化 函数模板 Max(x,y) 模板函数 Max(i1,i2) (i1,i2为int) 模板函数 Max(f1,f2) (i1,i2为float 模板函数 Max(d1,d2) (i1,i2为double) 函数模板 max(x,y) 模板函数 max(i1,i2) (i1,i2为int) 模板函数 max(f1,f2) (i1,i2为float 模板函数 max(d1,d2) (i1,i2为double) 模板函数 max(c1,c2) (i1,i2为char) 实例化 实例化 实例化 实例化 使用函数模板 函数模板只是说明,不能直接执行,需要实例化为模板函数后才能执行。 当编译系统发现有一个函数调用:函数名(实参表);时,将根据实参表中的类型生成一个重载函数即模板函数。该模板函数的定义体与函数模板的函数定义体相同

文档评论(0)

BLUED + 关注
实名认证
内容提供者

教师资格证持证人

全网 内容最全课件 价格最低 质量最高 不是之一,是唯一。 每个人使用的办公软件版本不一样,如有个别显示不出的文件,建议使用最新版。

版权声明书
用户编号:8070063100000015
领域认证该用户于2023年03月20日上传了教师资格证

1亿VIP精品文档

相关文档