C ++: la comparación de los operadores con funciones
los intrínseco tipos de datos están integradas en el lenguaje C ++, como int, flotador, y doble y los diversos tipos de puntero. C ++ permite al programador definir los operadores para las clases que el programador ha creado además de estos operadores intrínsecos. Se llama sobrecarga de operadores.
Normalmente, la sobrecarga de operadores es opcional y no intentó comenzando programadores de C ++. Una gran cantidad de experiencia en C ++ programadores no creo que la sobrecarga de operadores es una gran idea tampoco. Sin embargo, usted tendrá que aprender a sobrecargar un operador: el operador de asignación.
Un operador es nada más que una función incorporada con una sintaxis peculiar. La siguiente operación de adición
a + b
podría entenderse como si estuviera escrito
operador + (a, b)
De hecho, C ++ le da a cada operador de un nombre de estilo de función. El nombre funcional de un operador es el símbolo del operador precedido por la palabra clave operador y seguido por los tipos de argumentos apropiados. Por ejemplo, el + que añade un operador int a un int la generación de una int se llama int operador + (int, int).
Cualquier operador existente puede ser definido para una clase definida por el usuario. Por lo tanto, podría crear un Operador Complejo * (Complejo const, Complejo const) que me permitiría multiplicar dos objetos de tipo Complejo. El nuevo operador puede tener la misma semántica que el operador se sobrecarga, pero no tiene que hacerlo. Las siguientes reglas se aplican cuando la sobrecarga de operadores:
El programador no puede sobrecargar el . (punto), :: (colon), .*, * ->, Sizeof y ?: (ternarios) operadores.
El programador no puede inventar un nuevo operador. Por ejemplo, no se puede inventar la operación x $ y.
La sintaxis de un operador no se puede cambiar. Por lo tanto, no se puede definir una operación %yo porque % ya se define como un operador binario.
La prioridad de los operadores no se puede cambiar. Un programa no puede obligar a operador + para ser evaluados antes operador *.
Los operadores no pueden ser redefinidos cuando se aplica a los tipos intrínsecos - no se puede cambiar el significado de 1 + 2. operadores existentes pueden ser sobrecargado sólo para tipos recién definidos.
La sobrecarga de operadores es una de esas cosas que parece como una idea mucho mejor de lo que realmente es. Por lo general, la sobrecarga de operadores presenta más problemas de los que resuelve.