Nombre/término técnico para esto

J

Cuando un operador tiene más de un uso, ¿tiene algún nombre/término técnico? P.ej. el operador +, con el que en la gran mayoría de lenguajes puedes tanto sumar números como concatenar strings.

En un tutorial se refieren a esto como "operator overloading" pero he estado buscando en internet y lo que he encontrado parece no tener nada que ver con lo que he puesto arriba.

Muchas gracias.

Kike_Knoxvil

Hasta donde yo sé, y en C++ se le llama sobrecargar, que al final es redefinir el operador para que haga más cosas. Lo mismo con las funciones, que las puedes definir varias veces para que te acepten distintas entradas de datos y/o te aporten distintas salidas

Pero hasta donde sé, se le denomina con ese término

1 1 respuesta
J

#2 Entonces el tipo del tutorial estaba en lo cierto, supongo.

Yo había llegado hasta la doc de C# y explican básicamente lo que tú dices, pero supongo que no lo estaba entendiendo bien y no sabía si este era el termino correcto.

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/operator-overloading

Muchas gracias!

Ranthas

Ojo cuidado con eso.

Lo que describes es operator overloading, pero no nos confundamos; ese concepto no significa solo eso.

La sobrecarga de operadores (operator overloading) es la capacidad de un lenguaje para permitirte redifinir los operadores definidos en un lenguaje. Por ejemplo, redefinir el operador suma ( + ) para que funcione correctamente con suma de matrices o de números complejos.

No todos los lenguajes soportan esta característica. El caso concreto que has descrito se asemeja mucho a Java, que NO tiene sobrecarga de operadores. En Java (en concreto), cuando haces "a" + "b", estás usando un operador YA PREDEFINIDO del lenguaje, que coincide con el de suma aritmética.

4 1 respuesta
J

#4 Entonces es básicamente el mismo concepto de method/function overloading, no? Donde puedes tener una clase u objeto predefinido en el propio lenguaje, pero puedes sobrecargar esa clase u objeto con un método custom para que por ejemplo trabaje con floats también y no solo integers?

Muchas gracias!!

Esto me lía porque no tengo ni idea de cómo funcionan las entrañas de una función o un operador.

A ver, entonces en el caso de Java, que coinciden ambos operadores de suma aritmética y concatenación pero el lenguaje no soporta operator overloading, esta coincidencia no tiene ningún nombre técnico para referirse a este fenómeno de que un mismo operador sirve para dos cosas distintas?

El tutorial que estaba viendo era de JS, que creo que tampoco soporta operator overloading, pero el tipo ha dicho que a este fenómeno se le llama así y me ha confundido.

2 respuestas
Kike_Knoxvil

#5 Por lo que yo entiendo, los operadores pueden venir ya sobrecargados para realizar diversas tareas en el propio lenguaje. Un ejemplo es Matlab que el comando suma permite sumar tanto escalares como matrices bidimensionales (ahora mismo no sé si permite la suma de matrices n-dimensionales con n>2) sin necesidad de que lo configures

1
Ranthas

#5 El concepto es muy parecido al de method overloading, sí, pero no son lo mismo ni de cerca. Si estás empezando en esto, tampoco le des muchas vueltas.

Respecto a lo de la coincidencia en Java, no hay nombre técnico porque realmente no hay necesidad de describir ese fenómeno; no dejan de ser dos operadores distintos. Lo que pasa es lo de siempre: la gente simplifica los conceptos/ideas y a veces eso les lleva a sentencias erróneas.

Aunque en honor a la verdad, el caso concreto de Java es normal caer en esta pregunta y equivocarse, ya que el diseño del lenguaje es una auténtica mierda: si no permites sobrecarga de operadores, no reutilices el operador "+" en la clase String y lo llames "String Concatenation Operator".

1
J

Todo claro entonces. Muchas gracias por la ayuda compañeros.

Usuarios habituales