- 1、本文档共52页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【资格考试】全国计算机二级考C教程课件6ppt模版课件
第6章 模板 6.1 模板的概念 6.2 函数模板 6.3 类模板 6.1 模板的概念 所谓模板是一种使用类型参数来产生一系列函数或类的机制,是C++的一个重要特性。它的实现,方便了更大规模的软件开发。 若一个程序的功能是对某种特定的数据类型进行处理,则可以将所处理的数据类型说明为参数,以便在其他数据类型的情况下使用,这就是模板的由来。模板是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。 通过模板可以产生类或函数的集合,使它们操作不同的数据类型,从而避免需要为每一种数据类型产生一个单独的类或函数。 6.2 函数模板 C++提供的函数模板可以定义一个对任何类型变量进行操作的函数,从而大大增强了函数设计的通用性。使用函数模板的方法是先说明函数模板,然后实例化成相应的模板函数进行调用执行。 函数模板说明: template 模板形参表 返回值类型 函数名(模板函数形参表) { //函数定义体 } 例:以函数重载方式输出不同类型数组中的数据。 #include iostream.h void printArray(int *array,int count) { for (int i=0;icount;i++) coutarray[i] ; cout endl; } void printArray(double *array,int count) { for (int i=0;icount;i++) coutarray[i] ; cout endl; } void printArray(char *array,int count) { for (int i=0;icount;i++) coutarray[i] ; cout endl; } 函数模板的创建和使用 函数模板之所以能以同样的程序代码对不同类型的数据进行处理,其关键是将所处理的数据类型说明为参数,即类型参数化。 定义函数模板的一般形式是: template class 类型参数名1 ,class 类型参数名 2,… 函数返回值类型 函数名(形参表) { 函数体 } 说明: (1)这里的类型参数名就是代表形形色色数据类型的通用参数名,它可以代表基本数据类型,也可以代表类。 (2)编写函数模板的方法是: 第一步:定义一个普通的函数,数据类型采用具体的普通的数据类型,仍以打印数组为例,先定义一个打印整型数组的普通函数: void printArray(int *array,int count) { for (int i=0;icount;i++) coutarray[i] ; cout endl; } 第二步:将数据类型参数化:将其中具体的数据类型名(如 int )全部替换成由自己定义的抽象的类型参数名(如T)。 第三步:在函数头前用关键字template引出对类型参数名的声明。这样就把一个具体的函数改造成一个通用的函数模板: template class T //注意末尾不要加分号 void printArray(T *array,int count) //注意用类型参数替换的是数据类型名,不是变量名 { for (int i=0;icount;i++) coutarray[i] ; cout endl; } 函数模板不是一个可以执行的函数,它只是对函数功能的程序描述,编译程序不为它生成执行代码。 当编译程序遇到函数调用:函数名 (实参表) 时,自动将实参表中具体的数据类型替换函数模板中的类型参数,生成一个隐含的重载函数,该重载函数的程序代码与函数模板相同,类型则采用实参表中的具体数据类型。仍以前面所创建的打印数组函数模板为例,当程序出现函数调用语句 printArray(a,aCount); 时,编译程序将根据第一个实参a的数据类型int 匹配类型参数T,将函数模板中的所有T都替换成具体的数据类型int,从而产生一个具体的可执行函数的定义(这个过程称为模板实例化): void printArray(int *array,int count); 例用函数模板方法重写上例 #include iostream.h template class T //定义打印数组的函数模板 void printArray(T *array,int count) { for (int i=0;icount;i++) coutarray[i] ; cout en
您可能关注的文档
最近下载
- 老年髋部骨折患者围术期下肢深静脉血栓基础预防专家共识(2024版).pdf VIP
- 华为ICT大赛云赛道认证考试复习题库(含答案).pdf VIP
- 北师大版六年级数学上册期中期末试题及答案.pdf VIP
- 2021-2022年中国ESG行业研究报告.pptx
- 第一单元峥嵘岁月 第1课情感表达 教学设计 人教版初中美术七年级上册.pdf
- 2024年秋新人教版地理七年级上册课件 4.1 多变的天气.pptx
- 人教版九年级全册英语Unit 14大单元整体教学设计.docx
- 大单元教学中的项目化学习——以五年级上册民间故事单元为例.docx
- 全员专项学习培训试题题库单选、多选试题附答案.doc VIP
- 22G101-3 混凝土结构施工图平面整体表示方法制图规则和构造详图(独立基础、条形基础、筏形基础、桩基础).docx
文档评论(0)