繁体   English   中英

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

[英]Is there a way to make functions take in an operator as an argument in c++?

假设我有一个如下功能:

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

在不使用if else构造的情况下,假设我想将此函数归纳为一个允许我返回ab的运算符“-”,那么我有办法吗?

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

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

是的,您可以使用模板和可调用对象以有限的方式进行此操作。 只需使用如下模板即可编写函数:

#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>());
}

您可以按照我所示的方式传递任何这些运算符功能对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM