- 1、本文档共32页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计基础模板
C++面向对象程序设计教程 第3章 模板 模板 使用模板可以建立具有通用类型的函数库或类库,为一系列逻辑功能相同而数据类型不同的函数或类创建框架 模板提供了一种重用程序源代码的有效方法,方便了大规模的软件开发 模板的概念 模板的本质就是将所处理的数据类型说明为参数,模板是对具有相同特性的函数或类的再抽象,将程序所处理的数据的类型参数化,这样可使一段程序代码能用于处理多种不同类型的数据。 C++程序由类和函数组成,类对应类模板,函数对应函数模板。 引入函数模板 考察三个Swap()函数,分别用于交换两个整型数、交换两个浮点实型数以及交换两个双精度实型数 这三个Swap()函数的功能完全一样,只有所处理的数据的类型不同 引入类模板 三个类Integer、Float和Double分别用来处理整型数、浮点型实数以及双精度实型数 这三种类的处理功能完全一样,只有所处理的数据的类型不同 3.2.1 函数模板及模板函数 函数模板是对一批功能相同的函数的说明,它不是某一个具体的函数,是带有“类型参数”的一种描述 模板函数是将函数模板内的“数据类型参数”取某一个具体的数据类型后得到的具体函数 函数模板的声明 使用函数模板的方法是先声明函数模板,最后才可以调用模板函数。函数模板的一般声明格式如下: template class 类型参数名1, class类型参数名2, … 返回值类型 函数模板名(形参表) { …… // 函数模板体 } 或 template typename 类型参数名1, typename 类型参数名2, … 返回值类型 函数模板名(形参表) { …… // 函数模板体 } 生成模板函数 在使用函数模板时,用实际的数据类型具体化(实例化)类型形式参数,再根据实际参数类型,生成一个具体的模板函数,模板函数的函数体与函数模板的函数模板体完全相同,在程序中真正执行的代码是模板函数的代码 在使用函数模板生成模板函数时,有两种使用方式: 函数模板名(实参表) 或 函数模板名类型1, 类型2, …(实参表) 第一种使用方式将根据实参类型确定类型形式参数的具体类型,第二种方式中,类型1, 类型2, …称为类型实参表,用类型实参表中的类型来确定类型形式参数具体类型 只有一个类型形参的函数模板 类型形参表与类型实参表通常只包含一个类型,这时函数模板的一般声明格式如下: template class 类型参数名 返回值类型 函数模板名(形参表) { …… // 函数模板体 } 或 template typename 类型参数名 返回值类型 函数模板名(形参表) { …… // 函数模板体 } 使用函数模板生成模板函数的两种使用方式如下: 函数模板名(实参表) 或 函数模板名类型(实参表) 3.2.2 重载函数模板 模板函数类似于重载函数,但是同一个函数模板类型形式参数具体化(实例化)后的所有模板函数必须执行相同的代码,而函数重载时在每个函数体中可以执行不同的代码,当遇到执行的代码有所不同时,不能简单地套用函数模板,而应像重载普通函数那样进行重载 重载函数模板后,编译器首先匹配类型完全相同的函数,如果匹配失败,再寻求函数模板进行匹配 类模板及模板类 类模板与函数模板类似,它可以为任意数据类型定义一种模板,使用不同的数据类型具体化(实例化)类模板生成具体的模板类 模板类可以用于生成具体的对象 / / / /ysj/hljdxb/ 3.3.1 类模板的声明及生成模板类 定义一个类模板与定义函数模板的格式类似,必须以关键字template开始,类模板的一般声明形式如下: template class 类型参数名1, class类型参数名2, … class 类模板名 { …… // 类模板体 }; 或 template typename 类型参数名1, typename 类型参数名2, … class 类模板名 { …… // 类模板体 }; 类模板的声明 类模板的成员函数不但可以在类模板内定义,也可以在类模板外定义。在类模板外定义时,需要采用下面的形式: template class 类型参数名1, class类型参数名2, … 返回值类型 类模板名类型参数名1, 类型参数名2, …::成员函数名(形参表) { …… // 函数体 } 或 template typename 类型参数名1, typename 类型参数名2, … 返回值类型 类模板名类型参数名1, 类型参数名2, …::成员函数名(形参表) { …… // 函数体 } 生成模板类 类模板必须用实际的数据类型具体化(实例化)类型形式参数
您可能关注的文档
- BSS呼叫流程与实际接口分析.ppt
- BSC指令集解析.doc
- Business card.ppt
- BIM介绍及应用学习.ppt
- BZ振荡实验报告夏胜军材52.docx
- B版高中数学课件 选修2-2:第三章 数系的扩充与复数的引入 2.1《复数代数形式的加减法运算及其几何意义》.ppt
- b第七章动物基因工程上.ppt
- b、施工组织设计(中泰)三联.doc
- BIM技术在铁路隧道 设计阶段的应用研究-铁二院.pptx
- BS3000+总部用户手册.doc
- Haier海尔413升风冷变频多门冰箱 BCD-413WGHFD1BSJU1(白)说明书用户手册.pdf
- Siemens西门子工业抽屉式断路器主回路后垂直连接 抽屉式断路器主回路后垂直连接使用手册.pdf
- Samsung三星智能佩戴设备 Galaxy Fit3安全手册.pdf
- Samsung三星滚筒洗衣机 AI神 黑钻热泵洗烘旗舰 WD18DB8995BZSC使用手册.pdf
- Sakura樱花消毒柜 保洁柜消毒柜 SCQ-130D6用户手册说明书.pdf
- Hifiman头领科技ARYA UNVEILED说明书用户手册.pdf
- Siemens西门子工业抽屉式主回路连接前置端子 支撑件 抽屉式主回路连接前置端子 支撑件使用手册.pdf
- Siemens西门子工业中性线的外部电流传感器 中性线的外部电流传感器使用手册.pdf
- Siemens西门子工业电子脱扣单元 电子脱扣单元使用手册.pdf
- Razer雷蛇Playstation 专用雷蛇战锤狂鲨极速版 RZ12-038203 用户指南 (简体中文)说明书用户手册.pdf
最近下载
- 腰椎的解剖及腰部的层次解剖ppt参考课件.ppt
- 知识产权助推新质生产力发展.pptx VIP
- NB∕T 10805-2021 水电工程溃坝洪水与非恒定流计算规范.pdf
- 2022年鄄城县工会系统招聘考试题库及答案解析.docx VIP
- 2024年医师定期考核必考题库及答案.pdf
- 2023年互联网信息审核员理论考试题库(含答案).pdf VIP
- 2024中考语文《西游记》历年真题专练(学生版+解析版).pdf VIP
- 高中音乐鉴赏测试题.doc VIP
- 人教三上数学《数学广角—集合》单元作业设计方案(13页).pdf VIP
- 省级政府和重点城市一体化政务服务能力调查评估报告2021年.pdf VIP
文档评论(0)