C ++: Comparando Operadores com funções
o intrínseco tipos de dados são construídos em linguagem C ++, como int, flutuador, e duplo e os vários tipos de ponteiro. C ++ permite ao programador para definir as classes de operadores para que o programador criou em adição a esses operadores intrínsecas. Isto é chamado sobrecarga de operador.
Normalmente, a sobrecarga de operador é opcional e não tentada por começando programadores C ++. Um grande número de experiente C ++ programadores não acho que a sobrecarga de operador é uma ótima idéia também. No entanto, você terá que aprender a sobrecarregar um operador: o operador de atribuição.
Um operador é nada mais do que uma função built-in com uma sintaxe peculiar. A seguinte operação de adição
a + b
poderia ser entendido como se fosse escrito
operador + (a, b)
Na verdade, C ++ dá a cada operador de um nome de estilo função. O nome funcional de um operador é o símbolo do operador precedida pela palavra-chave operador e seguido pelos tipos de argumentos apropriados. Por exemplo, a + operador que adiciona um int para um int gerando um int é chamado operador int + (int, int).
Qualquer operador existente pode ser definida para uma classe definida pelo usuário. Assim, eu poderia criar um Complexo operador * (Complexo const, complexo const) que me permitiria multiplicar dois objetos do tipo Complexo. O novo operador pode ter a mesma semântica como o operador que sobrecarrega, mas não precisa. As seguintes regras aplicam-se quando a sobrecarga de operadores:
O programador não pode sobrecarregar o . (ponto), :: (cólon), .*, * ->, Sizeof e ?: (ternários) operadores.
O programador não pode inventar um novo operador. Por exemplo, você não pode inventar a operação x $ y.
A sintaxe de um operador não pode ser alterado. Assim, você não pode definir uma operação %Eu Porque % já é definido como um operador binário.
A precedência do operador não pode mudar. Um programa não pode forçar operador + de ser avaliada antes operador*.
Os operadores não podem ser redefinidas quando aplicado a tipos intrínsecos - você não pode mudar o significado de 1 + 2. Os operadores existentes podem ser sobrecarregados somente para tipos recentemente definidos.
Sobrecarga de operadores é uma daquelas coisas que parece ser uma idéia muito melhor do que realmente é. Normalmente, a sobrecarga de operador introduz mais problemas do que resolve.