可以这样声明和使用类模板:
- 先写出一个实际的类。
- 将此类中准备改变的类型名(如int要改变为float或char)改用一个自己指定的虚拟类型名(例如T)。
- 在类声明前面加入一行,格式为:
template <typename 虚拟类型参数>
如:
template <type numtype
class A
{…}; //类体 - 用类模板定义对象时用以下形式:
类模板名<实际类型名> 对象名;
或 类模板名<实际类型名> 对象名(实参表列);
如:
A cmp;
A cmp(3,7); - 如果在类模板外定义成员函数,应写成类模板形式:
template <typename 虚拟类型参数>
函数类型 类模板名<虚拟类型参数>::成员函数名(函数形参表列) {…}
关于类模板的几点补充: - 类模板的类型参数可以有一个或多个,每个类型前面都必须加typename 或class,如:
template <typename T1,typename T2>
class someclass
{…};
在定义对象时分别代入实际的类型名,如:
someclass<int, char> object; - 和使用类一样,使用类模板时要注意其作用域,只有在它的有效作用域内用使用它定义对象。
- 模板类也可以有支持继承,有层次关系,一个类模板可以作为基类,派生出派生模板类。