类成员函数可以是模板函数,还是必须是静态类函数。基本上可以根据需要在技术上实例化类和功能吗?
使用模板函数作为模板类的成员有什么限制?两者都可以同时完成,或者它是或者?
答案 0 :(得分:9)
您可以拥有模板类的模板成员函数,如下所示:
template <typename T>
class Foo {
public:
template <typename U>
void bar(const T& t, const U& u);
};
template <typename T>
template <typename U>
void Foo<T>::bar(const T& t, const U& u) {
// ...
}
答案 1 :(得分:6)
类方法可以是模板。唯一的限制是它们不能是虚拟的。
编辑:
为了更完整,构造函数也可以是模板
class X
{
template<typename T>
X( T t )
{
}
};
但当然,应该只有一个非模板析构函数