●模板使我们可以用一个代码段指定一组相关函数(称为模板函数)或一组相关类(称为模板类)。
●程序员对函数模板的定义只编写一次。基于调用函数时提供的参数类型,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