Je suis en train d'apprendre à propos de la surcharge d'opérateur en C++, et je vois qu' ==
et !=
sont simplement des fonctions spéciales qui peuvent être personnalisés pour les types définis par l'utilisateur. Ma préoccupation est, cependant, pourquoi il y a deux définitions nécessaires? J'ai pensé que si a == b
la valeur est true, a != b
est automatiquement faux, et vice versa, et il n'y a pas d'autre possibilité, parce que, par définition, a != b
est !(a == b)
. Et je ne pouvais pas imaginer une situation dans laquelle ce n'était pas vrai. Mais peut-être que mon imagination est limitée ou je suis ignorant de quelque chose?
Je sais que je peux définir en termes de l'autre, mais ce n'est pas ce que je demande. Je ne suis pas non plus demander à propos de la distinction entre les objets de comparaison par valeur ou par l'identité. Ou si deux objets de l'égalité et de la non-égalité en même temps (ce n'est certainement pas une option! ces choses sont mutuellement exclusif). Ce que je demande est-ce:
Est-il de toute situation possible à qui poser des questions sur les deux objets étant égales par ailleurs ne font sens, mais que vous demandez à leur sujet n' étant égales par ailleurs n'a pas de sens? (soit à partir de la perspective de l'utilisateur, ou le responsable de l'implémentation du point de vue)
Si cette possibilité n'existe pas, alors pourquoi diable est-ce que C++ ont ces deux opérateurs étant définie comme deux fonctions distinctes?