- 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
您可能关注的文档
- VISI的应用操作.ppt
- torch维润赛润(ELISA-classi)体外诊断试剂讲解.ppt
- Visual BASC 6入门与应用电脑入门基本概念.ppt
- Visual Foxpro程序设计第1章 据库概论.ppt
- WHO预认证和对料药的要求.ppt
- Word003图文混排.ppt
- WindwsXP的高级应用.ppt
- xmu中医针灸学演示,态PPT.ppt
- wto农产品市场准入法律制度.ppt
- XX TCT 检测关策划方案.doc
- 第11课《山地回忆》课件统编版语文七年级下册.pptx
- (统编2024版)道德与法治七年级下册 9.1日益完善的法律体系 课件(新教材).pptx
- 10.1 认识民法典 2024-2025学年八年级道德与法治下册.pptx
- Unit+6+Section+A+3a~+3c课件++-+2024-2025学年人教版八年级英语下册.pptx
- 10.1认识民法典 2024-2025学年七年级道德与法治下册高效备课精品课件+教学设计(统编版).pptx
- 11.3 功 功率 课件 -2024-2025学年教科版2024物理八年级下册.pptx
- 5.2+基本政治制度 -2024-2025学年八年级道德与法治下册高效课堂【核心素养目标精品课件】(统编版).pptx
- 19.2正比例函数的图像性质(同步课件)-2024-2025学年八年级数学下册(人教版).pptx
- 5.3基本经济制度 -【探究课堂】2024-2025学年八年级道德与法治下册高效备课精品课件+教学设计(统编版).pptx
- 9.2法律保障生活 2024-2025学年八年级道德与法治下册.pptx
文档评论(0)