Académique Documents
Professionnel Documents
Culture Documents
Hasta ahora siempre hemos declarado los parmetros de nuestras funciones del mismo
modo. Sin embargo, ste no es el nico modo que existe para pasar parmetros.
La forma en que hemos declarado y pasado los parmetros de las funciones hasta
ahora es la que normalmente se conoce como "por valor". Esto quiere decir que cuando
el control pasa a la funcin, los valores de los parmetros en la llamada se copian a
"objetos" locales de la funcin, estos "objetos" son de hecho los propios parmetros.
#include <iostream>
using namespace std;
int main() {
int a, b;
a = 10;
b = 20;
cout << "a,b ->" << a << ", " << b << endl;
cout << "funcion(a,b) ->"
<< funcion(a, b) << endl;
cout << "a,b ->" << a << ", " << b << endl;
cout << "funcion(10,20) ->"
<< funcion(10, 20) << endl;
return 0;
}
Referencias a objetos
^
#include <iostream>
using namespace std;
int main() {
int a;
int &r = a;
a = 10;
cout << r << endl;
return 0;
}
#include <iostream>
using namespace std;
int main() {
int a, b;
a = 10; b = 20;
cout << "a,b ->" << a << ", " << b << endl;
cout << "funcion(a,b) ->" << funcion(a, b) << endl;
cout << "a,b ->" << a << ", " << b << endl;
/* cout << "funcion(10,20) ->"
<< funcion(10, 20) << endl; // (1)
es ilegal pasar constantes como parmetros cuando
estos son referencias */
return 0;
}
En este caso, los objetos "a" y "b" tendrn valores distintos despus de
llamar a la funcin. Cualquier cambio de valor que realicemos en los
parmetros dentro de la funcin, se har tambin en los objetos
referenciadas.
Esto quiere decir que no podremos llamar a la funcin con parmetros
constantes, como se indica en (1), ya que aunque es posible definir
referencias a constantes, en este ejemplo, la funcin tiene como
parmetros referencias a objetos variables.
Y si bien es posible hacer un casting implcito de un objeto variable a
uno constante, no es posible hacerlo en el sentido inverso. Un objeto
constante no puede tratarse como objeto variable.