C ++: comparando com operadores funções

Video: C/C++: [if e else] Operadores de comparação. Aula 10

o intrínseco tipos de dados são construídos em linguagem C ++, tal como int, flutuador, e Duplo e os vários tipos de ponteiro. C ++ permite ao programador para definir os operadores para as classes que o programador criou em adição a esses operadores intrínsecas. Isso é chamado sobrecarga de operador.

Video: Aula de Programação C 008 - Operadores Relacionais, Comparação

Normalmente, a sobrecarga de operador é opcional e não tentada por programadores de começo de 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)

Video: Curso Excel #08 - O que são fórmulas e funções - Módulo Básico

Na verdade, C ++ dá a cada operador um nome de estilo função. O nome funcional de um operador é o símbolo operador precedido 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:

Video: Curso de Haskell - Aula 20 - Operadores e Funções

  • O programador não pode sobrecarregar o . (ponto), :: (cólon), .*, * -gt ;, 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á está definido como um operador binário.

  • A precedência do operador não pode mudar. Um programa não pode forçar operador + a ser avaliados 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 recém-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.


Publicações relacionadas