Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: vazquinhos en 22 Agosto 2012, 09:41 am



Título: Preguntillas sobre apuntadores en c++
Publicado por: vazquinhos en 22 Agosto 2012, 09:41 am
Hola estoy mirando tutoriales, libros etc etc para c++ y tengo unas dudillas con los apuntadores.

Por ejemplo cuando declaras una clase en c++ en su fichero .h, hacen un const variable& el "&" al final de la variable que significa?

Gracias


Título: Re: Preguntillas sobre apuntadores en c++
Publicado por: ecfisa en 22 Agosto 2012, 11:28 am
Hola vazquinhos .

Creo que te referis a const tipo &variable.

En la declaración de un argumento de función, permite enviar una variable por referencia evitando la copia local, ya sea para ganar memoria o velocidad, pero el modificador const garantiza que no se alterará el valor de la misma dentro de la función.

Ejemplo:

Código
  1. int f(const int &v) {
  2.  v = 10; /* ERROR */
  3. }
  4.  

Saludos.


Título: Re: Preguntillas sobre apuntadores en c++
Publicado por: vazquinhos en 22 Agosto 2012, 22:45 pm
por lo tanto cuando acabe la funcion el valor de la variable volvera a su estado original no¿?

Gracias.


Título: Re: Preguntillas sobre apuntadores en c++
Publicado por: ecfisa en 23 Agosto 2012, 03:02 am
Hola.

En el caso que se utilize el modificador const, cualquier intento de alterar el valor del argumento dentro de la función generará un error en tiempo de compilación. Es decir que  permanecerá en su estado original, no se le permite salir de él en ese ámbito.

Si lo que deseas es darle uso dentro de la funcion y que no se modifique el valor de la variable enviada tenes que pasarla por valor:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. void f(int v){
  5.  v = -5;
  6. }
  7. int main()
  8. {
  9.  int x = 10;
  10.  f(x);
  11.  cout << x;  /* muestra 10, el valor no fue alterado */
  12.  cin.get();
  13.  return 0;
  14. }
  15.  

Si en el último ejemplo el parámetro v hubiera estado precedido por el referenciador &,  se habría alterado el contenido de x y su valor final sería -5.

Saludos.