1 / 54
文档名称:

第10章 类模板与STL编程.ppt

格式:ppt   页数:54
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第10章 类模板与STL编程.ppt

上传人:翩仙妙玉 2012/8/27 文件大小:0 KB

下载得到文件列表

第10章 类模板与STL编程.ppt

文档介绍

文档介绍:第10章类模板与STL编程
制作人:沈显君杨进才
C++语言程序设计教程
第10章
类模板
第10章类模板
学习目标
理解类模板的概念;
掌握类模板的定义、实例化过程,会运用类模板;
掌握栈类模板、链表类模板的使用;
理解STL编程的基本思想;
掌握STL容器的使用;
熟练使用STL算法;
理解STL函数对象;
C++语言程序设计教程
第10章
类模板
C++语言程序设计教程
第10章
类模板
类模板
模板是C++语言的重要特征,它能够显著提高编程效率。利用C++的函数模板和类模板,能够快速建立具有类型安全的类库集合和函数集合,进行大规模软件开发,并提高软件的通用性和灵活性。C++的标准模板库(standard template library,简称STL)编程完全依赖模板的实现。

类模板是能根据不同参数建立不同类型成员的类。类模板中的数据成员、成员函数的参数、成员函数的返回值可以取不同类型,在实例化成对象时,根据传入的参数类型,实例化成具体类型的对象。类模板也称模板类。
类模板定义的语法为:
其中:
template为模板关键字。
模板参数表中的类型为参数化(parameterized)类型,也称可变类型,类型名为class (或typename);模板参数表中的类型也可包含普通类型,普通类型的参数用来为类的成员提供初值。
类模板中的成员函数可以是函数模板,也可以是普通函数。
C++语言程序设计教程
第10章
类模板
1. 类模板的定义
template <模板参数表>
class 类名
{
成员名;
};
例如,下面定义了一个模板类Student,为了增强类的适用性,将学号设计成参数化类型,它可以实例化成字符串、整型等;将成绩设计成参数化类型,它可以实例化成整型、浮点型、字符型(用来表示等级分)等;
C++语言程序设计教程
第10章
类模板
1. 类模板的定义
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章
类模板
1. 类模板的定义
template <模板参数表>
类型类名<模板参数名表>∷函数名(参数表)
{
函数体;
}
模板类的成员函数还可以在类外定义,其语法如下:
C++语言程序设计教程
第10章
类模板
1. 类模板的定义
template <模板参数表>
类型类名<模板参数名表>::函数名(参数表)
{
函数体;
}
其中:
模板参数表与类模板的模板参数表相同;
模板参数名表列出的是模板参数表中参数名,顺序与模板参数表中的顺序一致;
例如,模板类Student的成员函数在类外实现如下:
模板类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 Student<TNO, TScore, num>::BelowNum(TScore ascore)
{
return 0;
}
template <class TNO, class TScore, int num>
void Student<TNO, TScore, num>::sort()
{
}
template <class TNO, class TScore, int num>
TNO Student<TNO, TScore,