模板方法和模板类C ++

时间:2011-10-08 05:57:35

标签: c++ templates class-method

类成员函数可以是模板函数,还是必须是静态类函数。基本上可以根据需要在技术上实例化类和功能吗?

使用模板函数作为模板类的成员有什么限制?两者都可以同时完成,或者它是或者?

2 个答案:

答案 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 )
    {

    }

};

但当然,应该只有一个非模板析构函数