类模板定义必须声明类数据和函数成员,如以下示例所示。
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)。表达式参数可以是:
具有整型或枚举的值
指向对象的指针或到对象的引用
指向函数的指针或到函数的引用
指向类成员函数的指针