类模板定义必须声明类数据和函数成员,如以下示例所示。
template <class Elem> class Array {
Elem* data;
int size;
public:
Array( int sz );
int GetSize();
Elem& operator[]( int idx );
};template <unsigned Size> class String {
char data[Size];
static int overflows;
public:
String( char *initial );
int length();
};与函数模板不同,类模板可以同时有类型参数(如 class Elem)和表达式参数(如 unsigned Size)。表达式参数可以是:
具有整型或枚举的值
指向对象的指针或到对象的引用
指向函数的指针或到函数的引用
指向类成员函数的指针