Skip to main content

¿Qué es la sobrecarga del operador?

La sobrecarga del operador es una característica del lenguaje de programación de computadora que permite que un programador anule un operador predeterminado. Cuando la función del operador está sobrecargada, puede declararse con argumentos personalizados que son tipos de datos diferentes de los que el operador era capaz de manejar de manera predeterminada. Los nuevos parámetros pueden ser tipos primitivos o definidos por el usuario. Dentro del cuerpo de la función de anulación, un programador puede manipular los valores de los parámetros como desee. Al utilizar la sobrecarga del operador, un programador puede crear accesos directos intuitivos para manipular los tipos de datos definidos por el usuario o modificar cómo se manejan los tipos de datos predeterminados.

Cuando se crean tipos de datos definidos por el usuario, no hay forma de realizar tareas operativas simples, como sumar dos de ellas o incrementar los datos internos utilizando el operador de incremento unario con el tipo de datos. Los operadores, incluido el símbolo de suma, pueden anularse para que, si se usan como operadores binarios entre dos tipos de datos personalizados, devuelvan un resultado definido por el usuario. Del mismo modo, un operador unario, como el operador de incremento, puede ser anulado para aumentar un valor interno dentro del tipo definido por el usuario.

Una vez que un operador está sobrecargado, el compilador tiene que tomar una decisión sobre qué hacer cuando se encuentra con un operador sobrecargado. El compilador decide la acción adecuada a tomar en función de los tipos de datos que se utilizan como operandos, o en conjunto con el operador. Si los operandos, que son valores de parámetros para la función del operador, son tipos de datos definidos por el usuario, el compilador elegirá la función sobrecargada que tiene parámetros que coinciden con los operandos que se utilizan.

Los lenguajes de computadora varían en cómo permiten este tipo de polimorfismo ad-hoc. Diferentes idiomas pueden permitir la creación de nuevos operadores personalizados, la sobrecarga de todos o algunos de sus operadores, o pueden no permitir la sobrecarga de los operadores. C ++, C #, PHP y Perl permiten que algunos de sus operadores se sobrecarguen. La sobrecarga del operador no está permitida en C, Java y Javascript.

Tanto la sobrecarga del operador como la sobrecarga de funciones en general han sido objeto de debate. Algunos afirman que dar al programador la libertad de cambiar la forma en que se comporta un operador podría introducir el potencial de crear errores involuntarios por parte de otros programadores que usan el código personalizado. El punto de vista opuesto propone que permitir la sobrecarga del operador brinda a los programadores la capacidad de crear código intuitivo y conciso que será más fácil de entender, producirá menos costos y reducirá los errores.