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.

menu