模板类参数用于模板类函数语法
Template class argument for template class function syntax
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
在template<...> class X
中,名称X
作为非模板指的是X<...>
。
所以<T>
是多余的。这是合法的,但是多余的
相关文章:
- 如何通过派生类函数更改基类中的向量
- 库函数需要一个 std::function<void(void)>,如何传入类函数?
- 在类函数中初始化外部作用域变量
- c++ 在非类函数中使用类变量
- SDL_PollEvent() 无法捕获类函数内部SDL_QUIT?
- 从类成员函数到类 C 函数指针的转换
- 如何在模板类函数中分配结构值?
- C++使用 rand 定义函数语法
- 有没有办法将重载的类函数绑定到函数对象?
- 当C++类函数参数之一是结构时,它们的语法有什么不同
- 模板化函数语法错误中使用的模板化类中的嵌套类
- C++类构造函数语法的解释
- 类模板专用化中的成员函数语法
- 具有纯虚拟函数的模板类的C++语法
- 类函数语法混乱
- 模板类构造函数语法
- 名称隐藏和访问基类的非虚函数(语法)
- c++类构造函数语法
- 派生类构造函数语法
- 模板类参数用于模板类函数语法