最近在看侯捷的STL源码解析,遇到了一些模版的概念,先做以下总结,以备日后遗忘可查看。
模版分函数模版、类模版和成员模版。源码中主要关于前两种,因此第三种先不做阐述。
类模版
形式:
template <typename T>
class FOO
{
public:
T get_num();
void set_num(T t1);
private:
T t1;
}
使用该类的时候:
FOO<int> f1;
f1.set_num(2);
f1.get_num();
函数模版:
形式:
template <class T>
T max(T t1,T t2)
{
return t1 > t2 ? t1 : t2;
}
使用的时候:
int a1=2;
int b1=3;
int max_a_b = max(a1,b1);
关于泛化、特化(分全特化、偏特化)
泛化是指模版中的类型都未定,可以支持所有的类型传入。
全特化是指在泛化之后,对类型输入的时候,指定特定类型,进行定义。
偏特化是指将指定类型或者指定数量的输入固定,进行定义。
有问题请留言,有问必回,即使不会,一起学习,共同进步!!!