<分区>
我明白C++不能为一个类自动定义operator==
,但为什么它不能为使用
当 !(a == b)
a != boperator!=
不可用但 operator==
可用时?
我知道 std::rel_ops
,虽然我今天之前没有听说过它。
标签 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/