我学习C++操作符重载,我看到==和!=仅仅是可定制的用户定义类型的一些特殊功能.但我担心的是,为什么需要两个单独的定义?我认为如果a == b是真的,则a != b自动为假,反之亦然,并且没有其他可能性,因为根据定义,a != b是!(a == b).我无法想象任何情况都不是这样.但也许我的想象力是有限的,或者我对某些东西一无所知?
我知道我可以用另一个来定义一个,但这不是我要问的.我也没有询问按价值或身份比较对象之间的区别.或者两个对象是否可以同时相等且不相等(这绝对不是一个选项!这些东西是相互排斥的).我问的是这个:
是否有任何情况可以提出有关两个对象相等的问题是否有意义,但是询问它们不相等是没有意义的?(无论是从用户的角度,还是从实施者的角度来看)
如果没有这种可能性,那么为什么地球上C++会将这两个运算符定义为两个不同的函数?