- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 类模板 第10章 类模板 1. 类模板的定义 1. 类模板的定义 1. 类模板的定义 2. 类模板的实例化 2. 类模板的实例化 2. 默认模板参数 10.2 类模板应用 1. 栈类模板 2.链表类模板 2.链表类模板 2.链表类模板 10.3 本章小结 * * 制作人:杨进才 C++语言程序设计教程 第10章 类模板 学习目标 理解类模板的概念; 掌握类模板的定义、实例化过程,会运用类模板; 掌握栈类模板、链表类模板的使用。 C++语言程序设计教程 第10章 类模板 10.1 类模板 类模板是能根据不同参数建立不同类型成员的类。类模板中的数据成员、成员函数的参数、成员函数的返回值可以取不同类型,在实例化成对象时,根据传入的参数类型,实例化成具体类型的对象。类模板也称模板类。 类模板定义的语法为: 其中: template为模板关键字。 模板参数表中的类型为参数化(parameterized)类型,也称可变类型,类型名为class (或typename);模板参数表中的类型也可包含普通类型,普通类型的参数用来为类的成员提供初值。 类模板中的成员函数可以是函数模板,也可以是普通函数。 C++语言程序设计教程 第10章 类模板 template 模板参数表 class 类名 { 成员名; }; 例如,下面定义了一个模板类Student,为了增强类的适用性,将学号设计成参数化类型,它可以实例化成字符串、整型等;将成绩设计成参数化类型,它可以实例化成整型、浮点型、字符型(用来表示等级分)等; C++语言程序设计教程 第10章 类模板 template class TNO, class TScore, int num // TNO,TScore 为参数化类型 class Student { private: TNO StudentID[num]; //参数化类型数组,存储姓名 TScore score[num]; //参数化类型数组,存储分数 public: TNO TopStudent() //普通函数 { return StudentID[0]; } int BelowNum(TScore ascore) //函数模板 { return 0; } void sort() //普通函数 { } }; 模板类的成员函数还可以在类外定义,其语法如下: C++语言程序设计教程 第10章 类模板 template 模板参数表 类型 类名 模板参数名表::函数名(参数表) { 函数体; } 其中: 模板参数表与类模板的模板参数表相同; 模板参数名表列出的是模板参数表中参数名,顺序与模板参数表中的顺序一致; 例如,模板类Student的成员函数在类外实现如下: template class TNO, class TScore, int num class Student { private: TNO StudentID[num]; TScore score[num]; public: TNO TopStudent(); int BelowNum(TScore ascore); void sort(); }; template class TNO, class TScore, int num int StudentTNO, TScore, num::BelowNum(TScore ascore) { return 0; } template class TNO, class TScore, int num void StudentTNO, TScore, num::sort() { } template class TNO, class TScore, int num TNO StudentTNO, TScore, num::TopStudent() { return StudentID[0]; } 一个类模板是具体类的抽象,在使用类模板建立对象时,才根据给定的模板参数值实例化(专门化)成具体的类,然后由类建立对象。与函数模板不同,类模板实例化只能采用显式方式。 类模板
文档评论(0)