Sí, es necesario, si desea que todos funcionen de la manera que usted quiere que funcionen.
C++ no fuerza ninguna semántica específica en la mayoría de los operadores sobrecargados. Lo único que se soluciona es la sintaxis general para el operador (que incluye ser unario o binario y cosas como precedencia y asociatividad). Esto significa inmediatamente que la funcionalidad real que implementa en su sobrecarga puede ser absolutamente arbitraria. En general, puede que no haya una conexión significativa entre lo que hace el operador ==
y lo que hace el operador !=
. El operador ==
podría escribir datos en un archivo, mientras que el operador !=
podría ordenar una matriz.
Si bien la sobrecarga de operadores de una manera tan arbitraria ciertamente no es una buena práctica de programación, el lenguaje C++ no puede asumir nada. Por lo tanto, no, no puede y no usará automáticamente la combinación ! ==
en lugar de !=
, o la combinación ! >
en lugar de <=
.
Su ejemplo para '==' y '! =' Es bastante artificial. Una más realista sería una clase que representa un objeto SQL, donde tiene que lidiar con la semántica especial de 'NULL'. – dan04