[C con Clase] referencias

Steven R. Davidson vze266ft en verizon.net
Mie Dic 6 02:10:24 CET 2006


Hola Rodolfo,

rodolfo rosso paz wrote:
> Como estan todos, antes que continuar con mi pregunta, muchas gracias a 
> David Capello por tomarse el tiempo de responder a mi consulta anterior 
> sobre punteros.
> 
> 
> ahora se trata de esto :
> 
> 
> int &miFuncion(int, char);
> 
> 
> ¿ que papel cumple el &, o que tipo de valor me va a devolver la llamada a 
> esa función ?
> 

El operador & cumple la función de formar parte del tipo de dato 'int 
&', por lo tanto se llama "declarador". Al llamar a 'miFuncion()', se 
retornará una referencia a un entero; o sea, un valor de tipo 'int &'. 
Sin embargo, hay que tener cuidado al diseñar una función que retorna 
una referencia. Por ejemplo,

int &miFuncion( int num, char c )
{
   return num += c-'0';
}

Esto puede aparentar ser correcto, pero no es así. Recuerda que 'num' es 
una variable local a 'miFuncion()'. En cuanto termine la ejecución de 
'miFuncion()' todas las variables locales son automáticamente 
destruidas. Por lo tanto, la referencia a una variable que ya no existe 
implica introducir problemas de memoria. Esto es lo mismo que hacer lo 
siguiente:

int &func()
{
   int n=10;
   return n;
}

'n' también será destruida al terminar 'func()' y por tanto la 
referencia retornada no es válida.


Espero haber aclarado la duda.

Steven







Más información sobre la lista de distribución Cconclase