Non, rien n'est gratuit. Vous payez pour ce que vous utilisez en C++ (dans le cas de la surcharge d'opérateurs).
Vous ne recevez que l'Opérateur que vous surchargez, rien de plus.
De plus, c'est une bonne pratique que si vous surchargez ==
alors vous devez surcharger !=
car les utilisateurs de votre classe s'attendront à ce qu'elle soit disponible.
Surcharge de l'opérateur La FAQ C++ devrait être une bonne lecture.
Répondre à la question actualisée :
La question n'est pas de savoir si je peux ou non surcharger les deux opérateurs, mais si je dois surcharger l'inégalité si j'ai déjà surchargé l'opérateur d'égalité.
NON.
Il n'est pas nécessaire que vous Must surcharge !=
Si vous avez besoin de surcharger ==
. Cependant, il est bon que vous Devrait opérateurs de surcharge connexe l'un à l'autre.
Pourquoi est-ce une bonne pratique ?
Pensez-y du point de vue de l'utilisateur de votre classe. Si l'utilisateur de votre classe peut utiliser ==
(critères d'égalité) pour comparer les objets de votre classe, ils s'attendront naturellement à pouvoir utiliser les critères suivants !=
(critères de non-égalité) également, cela vient du fait que ces deux opérateurs sont étroitement liés et supportés pour tous les tyes intégrés.
Que se passe-t-il si vous ne tenez pas compte de la should
et ne pas surcharger !=
quand vous surchargez ==
?
Si les utilisateurs de votre classe utilisent !=
ils obtiendront une erreur de compilation.
Ils fronceraient un peu les sourcils de ne pas avoir été fournis avec !=
lorsqu'ils sont dotés de ==
et ils devront réaligner leur logique pour utiliser ==
au lieu de la !=
.
Vous pouvez donc vous en accommoder, mais attendez-vous à recevoir quelques froncements de sourcils et des plaintes pour manque de convivialité et absence d'interface conviviale.