类模板和模板类

类模板和模板类
 

1、类模板

类模板也称为类属类或类生成类,是为类定义的一种模式,它使类中的一些数据成员和成员函数的参数或返回值可以取任意的数据类型。类模板不是一个具体的类,它代表着一族类,是这一族类的统一模式。使用类模板就是要将它实例化为具体的类。

定义类模板的一般形式为:

template<class 数据类型参数标识符>

class 类名

{

    //……

}

其中,template是声明类模板的关键字;template后面的尖括号不能省略;数据类型参数标识符是类模板中参数化的类型名,当实例化类模板时,它将由一个具体的类型来代替。

定义类模板时,可以声明多个类型参数标识符,各标识符之间用逗号分开。

类定义中,凡要采用标准数据类型的数据成员、成员函数的参数或返回类型的前面都要加上类型标识符。

如果类中的成员函数要在类的声明之外定义,则它必须是模板函数。其定义形式为:

template<class 数据类型参数标识符>
函数类型 类名<数据类型参数标识符>∷函数名(数据类型 形参1,……,数据类型 形参n)

{

   函数体

}

2、模板类

将类模板的模板参数实例化后生成的具体的类,就是模板类。由类模板生成模板类的一般形式为:

类名<数据类型>对象名1,对象名2,…,对象名n;

这里的数据类型对应的是对象实际需要的数据类型。

是不是觉得“类模板”和“模板类”很绕圈圈?其实我觉得通俗的说,前者就是框架,后者就是在框架基础上声明的一个具体对象。

再来个通俗的比喻, int   i;

int 就相当于是类模板扮演的角色,i 就相当于是模板类扮演的角色,虽然比喻的可能从C++理论上来讲是8正确滴,8过便于理解嘛~~就8要追究那么多啦 呵呵

你可能感兴趣的:(类模板和模板类)