例如我可以用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
答案 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+