C++中的类模版

C++中的类模版语法示例:

templeate <typename T>
class Foo{
    ...
};

当然,typename也可以用class来替代。

如果类的成员函数单独拿出来写,语法示例:

template <typename T>
T Foo<T>::foo(T &t){
    return t;
}

当然成员函数本身还可以再是模版函数

template <typename T1>
class Foo{
    ...
    template <typename T2>
    T2 foo(T2 &t2);
};

template <typename T1>
template
<typename T2>
T2 Foo
<T1>::foo(T2 &t2){
return t2;
}

类模版和函数模版一样,也可以指定nontype parameter。可以参考函数模版中的nontype parameter

类模版参数和函数模版参数有时候会做一些非常小的转换,包括非const类型的转换成const类型、数组或函数转指针,以满足模版实例化的需求。

NOTE:

新学到一个知识点:

class Foo{
    ...
    typedef unsigned long size_t;
    ...
};

以后就可以使用Foo::size_t这个新定义的类型了。