[C con Clase] Saludos

David Fire ddfire en gmail.com
Jue Ene 14 00:06:11 CET 2010


las referencias tienen una contra, que es que son constantes, apuntan
siempre al mismo objeto.
si pasas un valor por referencia en el medio del codigo no podes hacer
referencia = new....
si la funcion va a crear algo en el heap y ya estas usando el return para
por ejemplo devolver un codigo de error las referencias no sirven.
pero para el resto son muy practicas.
David



El 13 de enero de 2010 17:30, <jferia en uci.cu> escribió:

>  En mi opinión en C++ la mejor forma de pasar parámetros es hacerlo
> mediante
>  las referencias, una de las ventajas que tiene es que no permite que se
> pase
>  un parámetro con el valor null, otra es que dentro de la función se hace
> uso
>  de las variables de forma natural, sin necesidad del operador flecha, esto
>  permite olvidarse de si se están tratando una variable o una referencia.
>  Además a la hora de llamar la función no se necesita un tratamiento
> especial
>  como es el caso del operador & cuando se usan punteros.
>
>  Siempre y cuando no se necesite modificar el parámetro los más adecuado es
>  pasarlo como referencia constante, previniendo que en la función se
>  modifique el objeto asociado a la referencia.
>
>
>
>
>
> Vicent <vginer en gmail.com> ha escrito:
>
>
>  2010/1/12 Leonardo Boquillon <lboquillon en gmail.com>
>>
>>  en mi humilde opinión creo que ya python esta lo suficientemente
>>> documentado, mm no se es raro ver esto es como ir a un foro del real
>>> madrid
>>> pidiendo que se haga algo del barcelona [?]
>>>
>>>
>>>
>> Creí que "Conclase" era un foro sobre fútbol, no sobre el Real Madrid.
>> Pero
>> es cierto que estoy en el "subforo" sobre C y C++.
>>
>>
>> En cualquier caso, lanzo una pregunta de novato sobre C++.
>>
>> Leyendo, he visto dos modos de pasar argumentos por referencia:
>>
>> (1)     void funcion1 ( int &parametro )  {
>>              ... } ;
>>
>> (2)     void funcion1 ( int *parametro )  {
>>              ... } ;
>>
>> En el caso (1),  "parametro"  es un entero pasado por referencia. En el
>> cuerpo de la función, debería referirme a él como "parametro", y todos los
>> cambios que experimente esa variable se verán reflejados en la variable
>> correspondiente donde esté la llamada a "funcion1".   Por ejemplo, podría
>> llamar a esta función así:  funcion(k) ; donde "k" es una variable tipo
>> int,
>> o bien  funcion(*pk),  donde  "pk" sería un puntero a una variable tipo
>> "int".
>>
>> En el caso (2), "parametro" es un puntero a un entero (el puntero es
>> pasado
>> por valor, no por referencia; pero es una manera de pasar un entero por
>> referencia). En el cuerpo de la función, debería referirme a ese entero
>> como
>> "*parametro", y todos los cambios que experimente el valor al que apunta
>> el
>> puntero "parametro" se verán reflejados en la variable correspondiente
>> donde
>> esté la llamada a "funcion1".   Por ejemplo, podría llamar a esta función
>> así:  funcion(&k) ; donde "k" es una variable tipo int, o bien
>>  funcion(pk),
>>  donde  "pk" sería un puntero a una variable tipo "int".
>>
>> También me ha parecido leer que la sintaxis (1) es incorrecta en C, pero
>> correcta en C++.
>>
>> ¿Cuál de las dos formas es la más usual para pasar parámetros por
>> referencia
>> a una función? O bien, ¿en qué casos es recomendable/preferida cada una?
>> ¿Son equivalentes, o hay alguna diferencia que se me escapa?
>>
>> Gracias de antemano por vuestras respuestas.
>>
>> Un saludo.
>>
>> --
>> Vicent
>>
>>
>
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
(\__/)
(='.'=)This is Bunny. Copy and paste bunny into your
(")_(")signature to help him gain world domination.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100113/0a756519/attachment-0001.html>


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