Diferencia entre revisiones de «Usuario:Cstaff/Zona de pruebas»

(Página reemplazada por '=Esta es una zona de pruebas=')
Línea 1: Línea 1:
 
=Esta es una zona de pruebas=
 
=Esta es una zona de pruebas=
 +
====Eficiencia====
 +
Otra razón para pasar un parámetro por  referencia es mejorar la eficiencia. Al pasar una copia del contenido  ocupamos en la memoria el doble de espacio. Aunque el espacio es  liberado una vez que la función termina, la operacón puede consumir  tiempo y en el caso de una clase se llama automáticamente a su  constructor y destructor.
 +
 +
Si deseamos impedir que se  modifique el contenido de la variable pasada por referencia simplemente  debemos declararla como '''const''', es una manera de evitar que  nosotros mismos modifiquemos el valor por error. Lo normal es que el  compilador lance un error en tiempo de compilación ante cualquier  intento de cambiar el valor de una variable declarada como '''const'''.
 +
 +
Ejemplo:
 +
 +
<div style="background-color: #e9e9e9; border:solid 1px #bcbcbc">
 +
<syntaxhighlight lang="cpp" line start="1">
 +
 +
void duplicar(int const *i){
 +
  i = i * 2;    //Provocará un error.
 +
}
 +
 +
</syntaxhighlight>
 +
</div>

Revisión del 12:12 17 may 2014

Esta es una zona de pruebas

Eficiencia

Otra razón para pasar un parámetro por referencia es mejorar la eficiencia. Al pasar una copia del contenido ocupamos en la memoria el doble de espacio. Aunque el espacio es liberado una vez que la función termina, la operacón puede consumir tiempo y en el caso de una clase se llama automáticamente a su constructor y destructor.

Si deseamos impedir que se modifique el contenido de la variable pasada por referencia simplemente debemos declararla como const, es una manera de evitar que nosotros mismos modifiquemos el valor por error. Lo normal es que el compilador lance un error en tiempo de compilación ante cualquier intento de cambiar el valor de una variable declarada como const.

Ejemplo:

1 void duplicar(int const *i){
2    i = i * 2;     //Provocará un error.
3 }