第10章 类模板.pptVIP

  • 19
  • 0
  • 约7千字
  • 约 14页
  • 2016-10-22 发布于河南
  • 举报
第10章 类模板

第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)

1亿VIP精品文档

相关文档