gpt4 book ai didi

c++ - 比较运算符重载,为什么编译器不做这项工作?

转载 作者:太空狗 更新时间:2023-10-29 23:51:50 25 4
gpt4 key购买 nike

今天我正在实现一个数据类型,我决定在其中重载比较运算符。这样做的时候,一个问题突然出现在我的脑海中。

作为程序员,为什么我必须定义每一个比较运算符,而我所做的只是根据 '<' 来定义它们(见下文)? - 也就是说,为什么编译器不自动为我生成这些。

a == b    =>    !(a<b || b<a)
a != b => (a<b || b<a)
a > b => b < a
a >= b => !(a < b)
a <= b => !(b < a)

我明白,出于性能原因,想要实现的不仅仅是 '<' 是完全合理的.

我知道显而易见的答案是,这是因为我自己可以很容易地做到这一点,但我确实相信编译器/语言规范应该尽一切可能来简化语言的使用。

最佳答案

定义operator<()operator==() , 和

#include <utility>
using namespace std::rel_ops;

然后自动定义所有比较运算符。请参阅 cppreference.com 提供的示例

关于c++ - 比较运算符重载,为什么编译器不做这项工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18638154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com