我可以将操作符作为参数发送给函数吗?

时间:2009-09-19 14:25:31

标签: c++

例如我可以用c:

int sum(int a, int b);
void print(int a, int b, int (*f)(int, int));

问题是我可以发送操作员吗?

print(12, 13, sum);
// print(12, 13, operator +); compilation error

2 个答案:

答案 0 :(得分:12)

不幸的是,这是不可能的。在functional标题中的C ++标准库中有一些常见运算符的包装器,例如std::plus<T>。但是,它不适用于您的代码,因为print函数需要plus<int>不具有的特定函数参数。

尝试传递模板参数,而不是那样,尝试更好:

template <typename BinaryFunction>
void print(int a, int b, BinaryFunction f);

print(12, 13, std::plus<int>());

答案 1 :(得分:2)

是的,一般情况下可能,但没有int operator+(int, int)int+int恰好是内置表达式。它适用于std::string::operator+