Vídeo: BENCHMARK - QUAL A FORMA MAIS EFICIENTE DE COMPARAR STRINGS EM C# 2024
Os tipos de dados intrínsecos são incorporados na linguagem C ++, como int , float e duplo e os vários tipos de ponteiro. O C ++ permite ao programador definir os operadores para as classes que o programador criou além desses operadores intrínsecos. Isso é chamado de sobrecarga do operador .
Normalmente, a sobrecarga do operador é opcional e não é tentada pelo início dos programadores C ++. Muitos programadores experientes em C ++ não pensam que a sobrecarga do operador é uma ótima idéia. No entanto, você terá que aprender a sobrecarregar um operador: o operador de atribuição.
Um operador não é mais do que uma função incorporada com uma sintaxe peculiar. A seguinte operação de adição
a + b
pode ser entendida como se estivesse escrito
operador + (a, b)
Na verdade, C ++ dá a cada operador um nome de estilo de função. O nome funcional de um operador é o símbolo do operador precedido pelo operador de palavras-chave e seguido pelos tipos de argumento apropriados. Por exemplo, o operador + que adiciona um int a um int gerando um int é chamado de operador int + (int, int).
Qualquer operador existente pode ser definido para uma classe definida pelo usuário. Assim, eu poderia criar um operador complexo * (Const Complex &, const Complex &) que me permitiria multiplicar dois objetos do tipo Complex . O novo operador pode ter a mesma semântica que o operador sobrecarrega, mas não precisa. As seguintes regras se aplicam ao sobrecarregar operadores:
-
O programador não pode sobrecarregar o . (ponto), :: (dois pontos), . *, * ->, sizeof e ?: operadores (ternários).
-
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 alterada. Assim, você não pode definir uma operação% i porque% já está definido como um operador binário.
-
A precedência do operador não pode ser alterada. Um programa não pode forçar o operador + a ser avaliado antes do operador * .
-
Os operadores não podem ser redefinidos quando aplicados em tipos intrínsecos - você não pode alterar o significado de 1 + 2. Os operadores existentes podem ser sobrecarregados apenas para tipos recém-definidos.
Operadores de sobrecarga é uma dessas coisas que parece uma idéia muito melhor do que realmente é. Geralmente, a sobrecarga do operador apresenta mais problemas do que resolve.