[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