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这个新定义的类型了。