有没有办法让函数将运算符作为c ++中的参数?

时间:2019-02-09 16:48:51

标签: c++ function operators

假设我具有如下功能:

#include<iostream>
int func(int a, int b)
{
    return a+b;
}

在不使用if else构造的情况下,假设我想对此函数进行概括以接受允许我返回a-b的运算符“-”,那么我有办法吗?

关于C语言,我碰到了以下link,并认为了解C ++中是否有任何新功能使其变得更容易是一个好主意?

此外,我是否可以将运算符存储在变量中或将引用传递给变量?

1 个答案:

答案 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个运算符函数对象。