elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda con el "&" en la declaración de funciones [C++]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con el "&" en la declaración de funciones [C++]  (Leído 3,279 veces)
Don Pollo

Desconectado Desconectado

Mensajes: 74

/* No comments */


Ver Perfil
Duda con el "&" en la declaración de funciones [C++]
« en: 21 Marzo 2011, 19:07 pm »

Veréis, tengo una duda que me reconcome por dentro y es que no comprendo cuando se pone el "&" delante del nombre de las funciones y cuando se pone al lado de los parámetros.

Algún alma caritativa que me lo explique?

Gracias de antemano!  ;D


En línea

Samael.Black

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: Duda con el "&" en la declaración de funciones [C++]
« Respuesta #1 en: 21 Marzo 2011, 19:11 pm »

Veréis, tengo una duda que me reconcome por dentro y es que no comprendo cuando se pone el "&" delante del nombre de las funciones y cuando se pone al lado de los parámetros.

Algún alma caritativa que me lo explique?

Gracias de antemano!  ;D
Cuando se usa con los parametros estas haciendo una referencia... pero cuando se usa delante del nombre de una funcion nose si sea lo mismo...


En línea

Don Pollo

Desconectado Desconectado

Mensajes: 74

/* No comments */


Ver Perfil
Re: Duda con el "&" en la declaración de funciones [C++]
« Respuesta #2 en: 21 Marzo 2011, 19:13 pm »

Cuando se usa con los parametros estas haciendo una referencia... pero cuando se usa delante del nombre de una funcion nose si sea lo mismo...

Sí, de las dos formas es por referencia, pero la cosa es que no sé cuando usar una u otra.
En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Duda con el "&" en la declaración de funciones [C++]
« Respuesta #3 en: 21 Marzo 2011, 19:51 pm »

cuando lo usas en los parámetros, especificas que dicha variable se pasará por REFERENCIA en vez de hacerse una copia de la misma y por tanto, podrá ser modificada en la función.

Código
  1. void incrementar (int & valor){
  2. valor++;
  3. }

si hacemos:
Código
  1. int n=4;
  2. incrementar(n);
  3.  
n ahora vale 5. En cambio, sin el & en el parámetro de la funcion, n no se modificaría fuera del rango de la misma, sino que se modificaría una copia de n, destruída al terminar la funcion.

Cuando va delante del nombre de una función, es que la función devuelve una referencia. Se utiliza sobretodo para encadenar operadores, ejemplo:
Código
  1. int i,j,k;
  2. k=j=i=1;
Esto lo puedes hacer, porque el operador = devuelve una referencia a si mismo, de forma que consigues el valor de 1 en base a la i para j, y el valor de 1 en k por el valor de j (que a su vez, como ya he dicho, se consigue con la referencia de 1 por la i).

Sobretodo se utiliza para sobrecargar operadores de clases, te pongo un ejemplo:
Código
  1. distancia& operator=(const distancia &assign){
  2. dist=assign.dist;
  3. desti=assign.desti;
  4. return *this;
  5. };
y esto, es lo que me permite encadenar asignaciones para mi clase "distancia"
En línea

Don Pollo

Desconectado Desconectado

Mensajes: 74

/* No comments */


Ver Perfil
Re: Duda con el "&" en la declaración de funciones [C++]
« Respuesta #4 en: 21 Marzo 2011, 21:27 pm »

Creo que lo he entendido. Entonces, cuando la función devuelva una referencia, tengo que retornar con el *this??
En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Duda con el "&" en la declaración de funciones [C++]
« Respuesta #5 en: 21 Marzo 2011, 21:43 pm »

Si quieres que esa referencia sea al objeto que la devuelve si. this es la palabra reservada que se refiere al objeto que la usa. En el ejemplo que yo he puesto, uso this para devolver la referencia al objeto al cual acabo de asignar.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines