Sì, è necessario, se si desidera che tutti funzionino nel modo in cui si desidera che funzionino.
C++ non impone alcuna semantica specifica sulla maggior parte degli operatori sovraccaricabili. L'unica cosa che viene corretta è la sintassi generale per l'operatore (incluso essere unario o binario e cose come la precedenza e l'associatività). Ciò significa immediatamente che la funzionalità effettiva implementata nel sovraccarico può essere assolutamente arbitraria. In generale, potrebbe non esserci alcuna connessione significativa tra l'operatore ==
e l'operatore !=
. L'operatore ==
potrebbe scrivere dati su un file, mentre l'operatore !=
potrebbe ordinare un array.
Mentre sovraccaricare gli operatori in modo così arbitrario non è certamente una buona pratica di programmazione, il linguaggio C++ non può assumere nulla. Quindi, no, non può e non utilizzerà automaticamente la combinazione ! ==
al posto della combinazione !=
o ! >
al posto di <=
.
Il tuo esempio per '==' e '! =' È piuttosto inventato. Uno più realistico sarebbe una classe che rappresenta un oggetto SQL, in cui devi gestire la semantica speciale di 'NULL'. – dan04