Omar
Sé todo sobre punteros y el ampersand significa “dirección de”, pero ¿qué significa en esta situación?
Además, al sobrecargar operadores, ¿por qué es común declarar los parámetros con const?
kyle walsh
En ese caso, está devolviendo una referencia a un objeto ostream. Pensar estrictamente en ampersand como “dirección de” no siempre funcionará para usted. AquíHay información de C++ FAQ Lite sobre referencias.
En lo que respecta a las constantes, la corrección de las constantes es muy importante en la seguridad de tipos de C++ y es algo que querrá hacer tanto como pueda. Otro página de las preguntas frecuentes ayuda en ese sentido. const lo ayuda con los cambios relacionados con los efectos secundarios, estropeando sus datos en situaciones en las que no lo espera.
nathan
Dependiendo del contexto del ampersand, puede significar 2 cosas diferentes. La respuesta a su pregunta específica es que es una referencia, no “la dirección de”. Son cosas muy diferentes. Es muy importante entender la diferencia.
La razón para hacer que los parámetros sean constantes es asegurarse de que la función no los cambie. Esto garantiza a la persona que llama a la función que los parámetros que pasan no cambiarán.
-
Cuando usa un ampersand en una variable ‘normal’, está tomando la dirección de la variable en la memoria; eso es lo que quiso decir Omar. Sin embargo, con las referencias, el & tiene un significado diferente.
– Jesper
15 de octubre de 2009 a las 12:34
-
Jesper, tienes razón. Actualicé mi respuesta para hacer la distinción.
– nathan
15 de octubre de 2009 a las 12:58
Significa que la variable es una referencia. Es como un puntero, pero no realmente.
Ver: Referencia (C++)
En las declaraciones de tipo C++, el ampersand significa “referencia”. En este caso operator <<
devuelve una referencia a un ostream
objeto.
Ya que en realidad regresa *this
en realidad es lo mismo ostream
objeto, y significa que puede encadenar llamadas a operator <<
similar a ésto:
os << "Hello" << " " << "World" << endl;