18.2 定义类模板

18.2 定义类模板

  在第一次看到类模板的定义时,它们看起来比实际的要复杂,这主要是因为定义它们所使用的表示法看起来比较复杂,定义中的参数也比较烦琐。类模板定义基本上类似于一般类的定义,但与其他事物一样,其中的一些细节要特别注意。

  用关键字 template 定义类模板,把模板的参数放在关键字 template 后面的尖括号中。之后,编写模板类定义,先使用关键字class ,之后是类模板名和放在花括号中的定义代码。与普通类一样,整个定义以分号结束。类模板的一般形式如下所示:

  template <模板参数列表> class ClassName{
  //Template class definition..
  };

  在这个定义中,ClassName是模板的名称。为模板体编写代码的方式与为普通类编写代码相同,但一些成员的声明和定义要根据模板参数来编写。模板的参数放在尖括号中,用逗号隔开。要从这个模板屮创建类,需要指定列表中的每个参数。

18.2.1模板参数

  模板参数列表可以包含两种参数:类型参数和非类型参数,列表中可以有任意多个参数。 对应于类型参数的变元是一个类型,例如int、string、Box等,而对应于非类型参数的变元是给定类型的值,如200,或给定类型的变量,如ivalue。模板中的类型参数比非类型参数普遍得多。所以非类型参数在本章后面介绍。

图18-2 类摸板参数

  类型参数通常使用关键字 class 后跟参数名来表示(如图18-2中的 class T ) ,也可以使用关键字 typename 代替 class ,即这里也可以使用 typename T 。其中 T 常常用作类型参数名(当模板有多个类型参数时,则使用 T1、T2 等),也可以使用自己喜欢的名称。

  提示:
  尽管关健字 class 似乎暗示,类型参数的参数必须是一个类,但实际上可以给参数提供任意类型,因此,如果使用 typename,可能会使其含义更清楚一些。

  下面介绍一个简单的类模板,它有一个类型参数,以此说明类模板的本质。

posted on 2017-03-05 15:58  一揽芳华  阅读(216)  评论(0编辑  收藏  举报

导航