Preguntillas sobre apuntadores en c++

Iniciado por vazquinhos, 22 Agosto 2012, 09:41 AM

0 Miembros y 1 Visitante están viendo este tema.

vazquinhos

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

ecfisa

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 (cpp) [Seleccionar]

int f(const int &v) {
  v = 10; /* ERROR */
}


Saludos.

vazquinhos

por lo tanto cuando acabe la funcion el valor de la variable volvera a su estado original no¿?

Gracias.

ecfisa

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 (cpp) [Seleccionar]

#include <iostream>

using namespace std;
void f(int v){
 v = -5;
}
int main()
{
 int x = 10;
 f(x);
 cout << x;  /* muestra 10, el valor no fue alterado */
 cin.get();
 return 0;
}


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.