c++ - 为什么 C++ 不自动使用 operator== 而不是 operator!=

标签 c++

<分区>

我明白C++不能为一个类自动定义operator==,但为什么它不能为使用!(a == b) a != boperator!= 不可用但 operator== 可用时?

我知道 std::rel_ops,虽然我今天之前没有听说过它。

最佳答案

因为 operator== 并不一定是 operator!= 的反义词。

我想不出任何 operator== 不代表 !operator!= 的例子,但它们是独立的运算符。关于 C++ 的最自由的,有时也是最令人沮丧的事情之一是 C++ 对如何编写代码应用了一组最小的限制。如果您有一个实例,其中 operator== 不是 operator!= 的对立面,那么您应该能够用 C++ 表达它。而且,事实上,您可以。

在 C++ 中你可以兼顾优点和缺点。您可能认为这是在“坏”的集合中。

请记住,在绝大多数情况下,根据 operator== 正确实现 operator!= 是微不足道的。

bool Gizmo::operator!=(const Gizmo& rhs) const
{
  return !operator==(rhs);
}

关于c++ - 为什么 C++ 不自动使用 operator== 而不是 operator!=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12940755/

相关文章:

c++ - 字符串值与 C++ 不匹配

c++ - 重载运算符体只包含一个函数调用

c++ - 外参数包可以用内参数包展开推导吗?

c++ - 为字符串设置自定义分配器

c++ - 需要快速的 c++ qt/qwt 散点图

c++ - C 字符串比定义的长度短一个字符?

c++ - 使用 boost property_tree 创建 json 数组

c++ - 如何将矩阵参数发送到 C++ 中的 main 函数

c++ - 如何将 3 个嵌套循环的函数变成一个递归函数?

c++ - 关闭我的 DISLIN 小部件会导致我的整个程序关闭