- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C多态性与虚函数要点
9.5 模板 9.5 模板 函数重载 int max(int x, int y); float max(float x, float y); 模板是C++中的通用程序模块。在这些程序模块中有一些数据类型是不具体的,或者说是抽象的。当这些抽象的数据类型更换为不同的具体数据类型以后,就会产生一系列具体的程序模块 template typename T T max(T x, T y); 考虑只写一个函数如何? 9.5 模板 C++中的模板包括 函数模板 类模板 函数模板实例化后产生的函数,称为模板函数 类模板实例化后产生的类,称为模板类 9.5.1 函数模板 函数模板定义的基本格式 : template typename 参数化类型名 函数返回类型 函数名(形式参数列表) {函数体 } “template”是定义模板的关键字; 在一对尖括号内,关键字“typename”后面声明所使用的“参数化类型名”; 关键字“typename”可以用“class”取代 。 9.5.1 函数模板 模板的其余部分和一般的函数定义的格式完全相同。只是在函数定义时可以使用参数化类型来代表各种具体的数据类型。 参数化类型可以用于: 函数返回值类型; 函数形式参数的类型; 函数体内,自动变量的类型。 例9.9 函数模板的定义和使用:定义和使用确定3个数据的最大值函数模板。 #includeiostream using namespace std; templatetypename T T max_value(T x,T y,T z) //函数模板的定义:求x、y、z的最大值 { T temp; temp = xy?x:y; return tempz?temp:z; } void main( ) { coutmax_value(12,32,21)endl; //用整数作实参调用函数模板 coutmax_value(a,A,9)endl; //用字符作实参调用函数模板 } 程序执行后,输出: 32 a 例9.10 编写一个带有两个形式参数的函数模板,可以按指定的操作数类型相乘。 #includeiostream templatetypename P1,typename P2 P1 cal(P1 x, P2 y) //有两个参数化类型名:P1和P2 { return (x * (P1)y); } //按x类型进行乘法 void main( ) { int w = 2; float z = 1.5; coutcal(w,z)endl; //按整型数相乘 coutcal(z,w)endl; //按浮点数相乘 } 程序运行的结果是: 2 3.0 带有确定类型的参数的函数模板 例: template class Q1 void ArrayInput(Q1 array, int num) { //输入数组元素 //…… } 函数模板的形式参数表中除了使用参数化类型名以外,还可以使用确定类型的参数。也就是说,函数模板的参数表中,一定要包含参数化类型名,但不一定都使用参数化类型名。还可以根据需要,使用确定类型的参数。 例9.11 设计和编写一个通用的输入数组元素的函数模板。可以用它来输入各种不同数据类型的数组。 #includeiostream.h #include typeinfo.h template class Q1 //函数模板 void ArrayInput(Q1 array, int num) { cout 输入num个typeid(Q1).name( ) \b型数据endl; for (unsigned j= 0; j num; j++) //输入数组元素 cin array[j]; } typeid运算符,它可以在程序运行时,显示指定的数据的类型 void main( ) { int number; float floatArray[4]; int intArray[3]; number = sizeof(floatArray) / sizeof(float); ArrayInput( floatArray, number); //
您可能关注的文档
最近下载
- 人教版鄂教版四年级上册科学全册知识点.pptx VIP
- 中国城市规划设计研究院交通影响评价征求意见和收费标准(建议稿).pdf VIP
- JB_T 14398-2022 食品机械 循环风式蒸汽杀菌釜.docx
- 2024年世界职业院校技能大赛高职组“智慧物流组”赛项参考试题库(含答案).docx
- 工程地质地质图部分.ppt VIP
- 人教版鄂教版四年级上册科学全册知识点.pdf VIP
- 2018-2024年海峡杯数学竞赛真题及答案(六年级).pdf VIP
- 征信简版电子版PDF个人信用报告最新版2024年可编辑带水印模板.pdf VIP
- 26个英语字母及常见字母组合在单词中的读音.doc VIP
- 2025年北京市中考语文试卷真题(含答案解析).docx
文档评论(0)