C++程序设计基础模板.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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, …::成员函数名(形参表) { …… // 函数体 } 生成模板类 类模板必须用实际的数据类型具体化(实例化)类型形式参数

文档评论(0)

文档精品 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6203200221000001

1亿VIP精品文档

相关文档