O que é sobrecarga do operador?
Sobrecarga de operador é um recurso da linguagem de programação de computador que permite que um programador substitua um operador padrão. Quando a função do operador está sobrecarregada, ela pode ser declarada com argumentos personalizados que são tipos de dados diferentes dos que o operador era capaz de manipular por padrão. Os novos parâmetros podem ser tipos primitivos ou definidos pelo usuário. Dentro do corpo da função de substituição, um programador pode manipular os valores dos parâmetros conforme desejado. Usando sobrecarga do operador, um programador pode criar atalhos intuitivos para manipular tipos de dados definidos pelo usuário ou modificar como os tipos de dados padrão são tratados.
Quando tipos de dados definidos pelo usuário são criados, não há como executar tarefas operacionais simples, como adicionar dois deles ou incrementar dados internos usando o operador de incremento unário com o tipo de dados. Os operadores, incluindo o símbolo de adição, podem ser substituídos para que, se forem usados como operadores binários entre dois tipos de dados personalizados, eles retornem um resultado definido pelo usuário. Da mesma maneira, um operador unário, como o operador de incremento, pode ser substituído para aumentar um valor interno dentro do tipo definido pelo usuário.
Depois que um operador está sobrecarregado, o compilador precisa tomar uma decisão sobre o que fazer quando encontra um operador sobrecarregado. O compilador decide a ação apropriada a ser tomada com base em quais tipos de dados estão sendo usados como operandos ou em conjunto com o operador. Se os operandos, que são valores de parâmetros para a função de operador, são tipos de dados definidos pelo usuário, o compilador escolherá a função sobrecarregada que possui parâmetros que correspondem aos operandos que estão sendo usados.
As linguagens de computador variam na forma como permitem esse tipo de polimorfismo ad-hoc. Idiomas diferentes podem permitir a criação de novos operadores personalizados, a sobrecarga de todos ou alguns de seus operadores ou podem não permitir a sobrecarga do operador. C ++, C #, PHP e Perl permitem que alguns de seus operadores sejam sobrecarregados. Sobrecarga de operador não é permitida em C, Java e Javascript.
Tanto a sobrecarga do operador quanto a sobrecarga de função em geral foram objeto de algum debate. Alguns afirmam que dar ao programador a liberdade de alterar a maneira como um operador se comporta pode introduzir o potencial de criar erros não intencionais por outros programadores que usam o código personalizado. O ponto de vista oposto propõe que permitir a sobrecarga do operador oferece aos programadores a capacidade de criar código intuitivo e conciso que será mais fácil de entender, custará menos para produzir e reduzirá erros.