模板类函数语法

时间:2016-09-12 00:00:27

标签: c++ templates

template <typename T>
class Foo {
public:
    T val;
    Foo(T p_val) : val(p_val) {}
    T sum(Foo<T> other) { return val + other.val; }
};

int main() {
    Foo<int> f1(3);
    Foo<int> f2(5);
    std::cout << f1.sum(f2) << std::endl;
}

按预期打印8

如果我将成员函数签名更改为T sum(Foo other)(删除<T>),它仍会打印8。一般来说,我是否包括<T>是否重要?我使用的是Visual C ++ 2015。

1 个答案:

答案 0 :(得分:2)

template<...> class X中,名称X作为非模板引用X<...>

因此<T>是多余的。这是合法的,但是多余的。