假设我具有如下功能:
#include<iostream>
int func(int a, int b)
{
return a+b;
}
在不使用if else构造的情况下,假设我想对此函数进行概括以接受允许我返回a-b的运算符“-”,那么我有办法吗?
关于C语言,我碰到了以下link,并认为了解C ++中是否有任何新功能使其变得更容易是一个好主意?
此外,我是否可以将运算符存储在变量中或将引用传递给变量?
答案 0 :(得分:4)
是的,您可以使用模板和可调用对象以有限的方式执行此操作。只需使用如下模板即可编写函数:
#include <iostream>
template <typename T>
int func(int a, int b, T op) {
return op(a, b);
}
// Call the function here with type.
int main() {
std::cout << func(5, 8, std::plus<int>());
}
您可以按照我显示的方式传递任何these个运算符函数对象。