运算符可以用作函数吗? (C++)

2024-05-09

这与我问过的另一个问题类似,但是,我创建了一个表达式类,其工作方式如下:

expression<int, int> exp(10, 11, GreaterThan);
//expression<typename T, typename U> exp(T val1, U val2, oper op);
//where oper is a pointer to bool function(T, U)

其中 GreaterThan 是先前定义的函数。我想知道为什么我不能这样做:

expression<int, int> exp(10, 11, >);

特别是当 > 被重载为

bool operator>(int a, int a){return (a > b);}

这与 GreaterThan 相同:

bool GreaterThan(int a, int b){return (a > b);}

返回 bool 并接受两个参数的函数。


我不确定这是否是您要问的,但 C++ 标准库为许多 C++ 运算符提供了函数对象,在标头中声明<functional>。这包括std::plus (+), std::minus (-), std::multiplies (*), std::divides (/), std::modulus (%), std::negate(一元-),std::equal_to (==), std::not_equal_to (!=), std::less(std::greater(>),std::less_equal(std::greater_equal(>=),std::logical_and(&&),std::logical_or (||), std::logical_not (!)

所以也许你只是想要

expression<int, int> exp(10, 11, std::greater<int>());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

运算符可以用作函数吗? (C++) 的相关文章

随机推荐