ITEEDU

小 结

●模板使我们可以用一个代码段指定一组相关函数(称为模板函数)或一组相关类(称为模板类)。

●程序员对函数模板的定义只编写一次。基于调用函数时提供的参数类型,C++自动产生单独的函数来正确地处理每种类型的调用。这些都是利用程序源代码的剩余空间进行编译。

●所有函数模板定义都足用关键字template开始的,该关键字之后是用尖括号<>括起来的形式参数表。函数模板的每个形式类型参数之前应有关键字class(或新的关键字typename)。关键字class指定函数模板的类型参数,实际上表示“任何内部类型或用户自定义类型”。

●模板定义的形式参数可用来指定传递给函数的参数类型、函数返回类型和声明函数中变量。

●形式参数的名字可以只在模板的形式参数表中出现一次。同一个形式参数名可用于多个模板函数。

●函数模板本身可以用多种方式重载。我们可以提供其他函数模板,指定不同参数的相同函数名。函数模板也可以用其他非模板函数(同名而不同参数)重载。

●类模板提供了描述一个类和实例化类(即该通用类指定类型的版本)的方法。

●为了说明如何定制通用类模板以形成指定的模板类,类模板需要类型参数,所以类模板也常常称为参数化类型。

●要使用模板类的程序员只需简单地编写一个类模板。在需要用模板建立一个新的指定类型的类时,程序员只需要用一种简洁的表示方法,编译器就会写出该模板类的源代码。

●类模板的定义似乎与普通的类定义没什么不同,除了使用template<class T>指明这是一个带类型参数T(指明创建的类的类型)的类模板定义。在类首部和成员函数的定义中,类型

●作为一个通用的类型名。

●在类模板首部以外的成员函数定义都要以template<class T>开头。接着,成员函数的定义与普通成员函数的定义相似,只是类中的数据通常用类型参数T表示。二元作用域运算符总是把成员函数的定义与正确的类范围联系起来。

●类模板首部也可以使用无类型参数。

●特定类型的类可以重定义该类型的类模板。

●类模板可以从模板类派生。类模板可以从非模板类派生。模板类可以从类模板派生。非模板类可以从类模板中派生。

●函数和整个类都可以声明为非模板类的友元。使用类模板,可以声明各种各样的友元关系。

友元可以在类模板与全局函数间、另一个类(可能是模板类)的成员函数间或整个类中(可能是模板类)建立。

●从类模板实例化的每个模板类有自己的类模板的Static数据成员.该模板类的所有对象共享一个static数据成员。和非模板类的static数据成员一样,模板类的Static数据成员也应在文件范围内初始化。

●每个模板类有该类模板的static数据成员副本。

术 语

  angle brackets   尖括号                            keyword temPlate   关键字template
class template   类模板                         non-type parameter in a templateheader模板首
class template name  类模板名                        部中的无类型参数
formal parameter in a template header   模  overloading a template function  重载模板函数
  板首部中的形式参数                               parameterized type   参数化类型
friend of a template   模板的友元                  static data member of a class template  
function template  函数模板                               类模板的static 数据成员
function temPlate declaration  函数模板的声明      static data member of a template class  模
function template definition  函数模扳的定义              板类的static数据成员
keyworde class in a template type parameter  模板  static member function of a class template  
  类型参数中的关键字class                                 类模板的static成员函数
static member function of a template class  模板类 template argument  模板实参
    的static成员函数                               template name  模板名
template class  模板类                             template parameter  模板形参
template class member function  模板类成员函数     type parameter in a template header  模板
template    类型参数                             首部的
template function  模板函数                        typename