2011-06-27 8 views
13

Duplicar posible:
What legitimate reasons exist to overload the unary operator& ?¿Por qué alguien querría sobrecargar el operador & (address-of)?

acabo de leer this question, y no puede dejar de preguntarse:

¿Por qué alguien pueda desear para sobrecargar el & (" dirección de ") operador?

 
    some_class* operator&() const { return address_of_object; } 

¿Existe algún caso de uso legítimo?

+0

@Matti: Podemos marcar para fusionar. Eso es mejor que duplicar las respuestas y la pregunta. –

+0

@Tomalak: Whoa. No sabía que eso fuera posible. –

+0

@Matti: No estoy 100% convencido de que lo sea, pero he escuchado rumores ... :) –

Respuesta

18

Si está tratando con cualquier tipo de objeto envoltorio, es posible que desee o necesite reenviar transparentemente el acceso al contenedor al objeto contenido. En ese caso, no puede devolver un puntero al envoltorio, pero necesita sobrecargar el operador de dirección para devolver un puntero al objeto contenido.

+0

Heh, busqué "dirección de sobrecarga C++ de" exactamente para saber si puedo hacer esto. Gracias por la seguridad extremadamente rápida :-) –

6

Porque son malvados y quieren que sufras.

O supongo que si está utilizando objetos proxy? I Supongamos que es posible que desee devolver un puntero al objeto administrado en lugar del contenedor, aunque preferiría hacerlo con una función getter. De lo contrario, debe recordar usar cosas como boost::addressof.

+0

Supongo que el objetivo de un objeto proxy es que no sabes que está allí. (O actúa como si no lo supiera). En particular, no sabe su dirección. Por lo general, es un temporal de todos modos. – curiousguy

7

Sí, para la depuración (si desea rastrear cualquier acceso o referencia, es posible que desee poner una línea de registro en cualquier llamada a &, * o ->).

0

Ya he visto esto en el código de producción.

Pero allí, se devolvió una representación binaria del contenido de struct, no solo 0.

Y el uso fue simple: operaciones binarias.

+2

Operaciones binarias con '' y '? –

+0

Buscaré si encuentro el código nuevamente, luego publicaré un ejemplo. Suena extraño, parece gracioso (creo feo) pero tal vez el autor pensó que era mejor usar el '&' dos veces;) –

+0

porque ¿por qué tiene que hacer algo que tenga sentido, cuando en su lugar se puede hacer ... _hathat_. : / –

Cuestiones relacionadas