相关疑难解决方法(0)

运算符重载的基本规则和习惯用法是什么?

注意:答案是按照特定的顺序给出的,但由于许多用户根据投票而不是给出的时间对答案进行排序,因此这里是答案索引,它们是最有意义的顺序:

(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)

c++ operator-overloading operators c++-faq

2074
推荐指数
8
解决办法
88万
查看次数

使用`operator!=()`实现`operator ==()`是否更有效?反之亦然?

在我看来,对于任何复合对象来说,实现它是低效operator!=operator==.对于要与N子对象进行比较的对象,operator==必须始终执行这些比较中的每一个:当且仅当每个子对象相等时,2个对象相等.(忽略此讨论中不相关的子对象.)

相比之下operator!=,只有在找到不匹配时才检查子对象就足够了.因此,在复合情况下使operator!=委托operator==变得低效,因为它在每种情况下都会产生N次比较,而不仅仅是最坏的情况.

这是张贴由开始的超长评论讨论后一个新的问题这条评论.另一位意见提供者说:

operator== 并不总是需要进行N次比较,在最坏的情况下只需要进行N次比较,这至少是除了最后一个子对象之外的所有子对象

我看不出那可能是怎么回事......我错过了什么?

这当然比纯粹的C++更为通用,但由于讨论是针对我的,所以我保留了相同的标签.

c++

-1
推荐指数
1
解决办法
79
查看次数

标签 统计

c++ ×2

c++-faq ×1

operator-overloading ×1

operators ×1