[C con Clase] Saludos

jferia en uci.cu jferia en uci.cu
Mie Ene 13 21:30:41 CET 2010


  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
>







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