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

XTF*_*XTF 6 c++

我理解C++不能operator==自动为一个类定义,但为什么它不能!(a == b)用于a != b什么时候operator!=不可用但是operator==

我知道std::rel_ops虽然我今天没有听说过它.

Joh*_*ing 6

因为operator==并不一定意味着相反operator!=.

我想不出任何operator==不意味着的实例!operator!=,但它们是独立的运营商.关于C++最令人解放,有时甚至是最令人沮丧的事情之一就是C++对如何编写代码应用了一组最小的限制.如果你的实例operator==不是相反的operator!=,那么你应该能够在C++中表达它.事实上,你可以.

你在C++中利用坏处.你可能会认为这是"坏"的集合.

请记住,在绝大多数情况下,正确实施是微不足道operator!=operator==.

bool Gizmo::operator!=(const Gizmo& rhs) const
{
  return !operator==(rhs);
}
Run Code Online (Sandbox Code Playgroud)

  • @Default:编辑错别字的帖子很好.我做了很多tpyos,所以跟着我,你会得到很多机会. (2认同)

D.S*_*ley 5

C++作为一种语言不提供您没有明确要求的功能.我知道这个哲学对于默认构造函数等有点破坏,但这是Stroustrup很早就做出的一个设计决定 - 你没有为你不使用的东西买单.因此编译器不会自动生成您不需要的内容.

1993年初,在ACCU网站上提到了Bjarne的一个电子邮件链,其中提到了这一点.如果我没记错的话,它也在D&E中; 我没有方便参考的副本.