La sobrecarga del operador es una característica del lenguaje de programación de computadoras que permite a un programador anular un operador predeterminado. Cuando la función del operador está sobrecargada, se puede declarar con argumentos personalizados que son tipos de datos diferentes a los que el operador era capaz de manejar de forma predeterminada. Los nuevos parámetros pueden ser tipos primitivos o definidos por el usuario. Dentro del cuerpo de la función primordial, 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 ellos o incrementar los datos internos utilizando el operador de incremento unario con el tipo de datos. Los operadores, incluido el símbolo de adición, se pueden anular para que, si se utilizan como operadores binarios entre dos tipos de datos personalizados, devuelvan un resultado definido por el usuario. De la misma manera, un operador unario, como el operador de incremento, podría anularse 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 encuentra 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 junto con el operador. Si los operandos, que son valores de parámetro 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 informáticos varían en la forma en que permiten este tipo de polimorfismo ad-hoc. Diferentes lenguajes 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 operadores en absoluto. C ++, C #, PHP y Perl permiten sobrecargar algunos de sus operadores. 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 cierto 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 no intencionales por parte de otros programadores que usan el código personalizado. El punto de vista opuesto propone que permitir la sobrecarga del operador les da a los programadores la capacidad de crear código intuitivo y conciso que será más fácil de entender, costará menos de producir y reducirá los errores.