2010-03-21 16 views
6

Si sobrecarga -como operador-(), se debe usar a la izquierda del objeto, sin embargo, la sobrecarga() como operador()() se usa a la derecha del objeto. ¿Cómo sabemos qué operador se debe usar a la izquierda y cuáles se usarán a la derecha?Sobrecarga del operador en C++

+2

Esto tiene una respuesta simple, pero desde la perspectiva de alguien nuevo en la programación, me imagino que esto podría ser una fuente de mucho dolor de cabeza. +1 –

Respuesta

3

Mire el operator precedence chart. Esto le indicará la dirección que el operador asocia (vincula). Tenga en cuenta que algunos operadores tienen múltiples formas con diferentes significados, como el binario y el unitario -. En tales casos, es posible tener varias sobrecargas, por ejemplo .:

T operator-() 

y:

T operator-(const T &o) 

El compilador elige el más adecuado basado en la interpretación sintáctica del operador.

Vea también este útil set of guidelines.

+0

¿'operador-()' realmente no devuelve nada? ¿No debería devolver un valor del tipo apropiado que sea la negación del valor o la diferencia entre los valores? –

+0

Gracias por captar eso, Jonathan. Corregido ahora. –

1

La mayoría de los operadores unarios solo se pueden ubicar en un lado específico de su operando. Para los dos casos especiales, ++ y --, consulte this FAQ.