我正在学习c++中的操作符重载,我看到==
和!=
只是一些特殊的函数,可以为用户定义的类型定制。不过,我关心的是,为什么需要两个独立的定义?我认为如果a == b
为真,那么a != b
自动为假,反之亦然,并且没有其他可能性,因为,根据定义,a != b
是!(a == b)
。我无法想象任何情况下这不是真的。但也许我的想象力有限,或者我对某些事情一无所知?
我知道我可以用一个定义另一个,但这不是我要问的。我也没有问通过值和单位来比较对象之间的区别。或者两个对象是否可以同时相等和不相等(这绝对不是一个选项!这些事情是相互排斥的)。我想问的是:
有没有可能在任何情况下,问关于两个对象相等的问题是有意义的,但问他们不相等是没有意义的?(无论是从用户的角度,还是从实现者的角度)
如果没有这种可能性,那么究竟为什么c++将这两个操作符定义为两个不同的函数呢?