我很好奇在C++中什么时候需要使用模板参数。
例如,让我们定义一个类:
template<typename T> class Add {
T value;
public:
Add(T value) : value(value){};
T operator() (T valrhs){
return value + valrhs;
}
};
如果我们想要使用double类型创建一个Add对象,为了避免错误,需要按照以下方式定义它:
Add<double> add5 = Add<double>(5.0);
现在让我们考虑以下定义的函数:
template<typename T, typename Function> T doOperation (T data, Function f){
return f(data);
}
在代码中,如果调用doOperation函数,则不需要任何模板参数。例如,
std::cout << doOperation(5.0, add5);
输出将为10。为什么doOperation不需要模板参数,而定义add5需要模板参数?
此外,是否可以使用函数指针来定义这个问题。我一直在试图弄清楚如何使用函数指针作为参数变量传递像这样的仿函数,而不是第二个模板参数。
谢谢,任何帮助都会受到赞赏。