概念
需要编写多个形式和功能相似的函数,因此有了函数模板。也需要编写多个形式和功能都相似的类,因此引入了类模板的概念。
C++ 中类模板的写法如下:
template <类型参数表>
class 类模板名{
成员函数和成员变量
};
比如:
template <typename Type>
class ClassName{
public:
private:
Type DataMember;
}
可以使用模板声明传递参数
在使用模板的时候,template<typename T>类似一个函数签名, 而T就是这个函数签名的形参, typename就是参数类型。typename表示该位置接受一个类型名作为参数。
template <typename T, int n> //接受一个整型数据作为模板的参数
class Stack{
private:
static int num = 0;
int cap;
T sz[n]; //用接收到的数据初始化数组长度
}
// 注意模板参数只能接收整型,枚举,引用和指针类型的数据,并且在传入数据的时候,只能使用常量表达式传入数据。
Stack<int, 4> s;
类模板和模板类
类模板的重点是模板。表示的是一个模板,专门用于产生类的模子。例子:
//类模板
template <typename T>
class Vector
{
....
};
//模板类,重点是类,类是由一个模板生成的类。
Vector<int>、Vector<char>