首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我需要重载的最小运算符集是多少?

我需要重载的最小运算符集是多少?
EN

Stack Overflow用户
提问于 2011-01-04 07:26:16
回答 3查看 863关注 0票数 1

比较的运算符(<=、>、==等)您是否通常将其实现为基本运算符,之后可以使用它来实现rest比较运算符或在类之间进行所有可能的比较?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-04 07:26:55

您可以使用以下等效项根据==<实现所有六个运算符:

代码语言:javascript
运行
复制
a != b    =>    !(a == b)
a > b     =>    b < a
a >= b    =>    !(a < b)
a <= b    =>    !(b < a)
票数 7
EN

Stack Overflow用户

发布于 2011-01-04 07:47:14

我通常为对象和operator!=实现operator==。许多对象没有排序序列,因此比较操作符<、<=、>、>=没有意义。

此外,通过使用boost::equality_comparableboost::less_than_comparable,只需要实现operator==operator<。这些可以在boost/operators.hpp中找到。

此外,我还了解到,在基类或接口类中放置比较运算符可能会变得相当棘手,因为它们允许将Descendent_A与Descendent_B进行比较,这是两个不同的子类。

比较运算符应根据需要在类中实现。许多类都不需要它们。另外,要注意在基类中实现或定义它们,而不考虑继承的后果。

票数 3
EN

Stack Overflow用户

发布于 2011-01-04 07:28:11

对于适用的类,我通常“本机”地实现operator<operator==,因为它们在标准算法和容器中非常重要。

然后,我在这些方面实现了其他四个。

我有时考虑的另一种方法是实现一个“比较”函数,它以strcmp的方式返回10-1,并实现所有其他运算符。只有当operator<operator==看起来需要共享大量相同的代码时,我才会这样做,而我认为这种情况发生的频率并不高。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4589353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档