Hola dandyuno.
Cita:
Empezado por dandyuno
Gracias de nuevo, el tema de los punteros no lo llevo muy bien, he leído sobre ello pero aún estoy muy verde al respecto.
|
Una función puede recibir un parámetro por valor o por referencia.
Básicamente, cuando el argumento es pasado por valor, la función hace una copia local del mismo y trabaja sobre el, por lo tanto no se altera el contenido del objeto enviado. Cuando es pasado por referencia, la función recibe la dirección del argumento, el valor del mismo puede alterarse dentro de ella y no se pueden enviar constantes ni expresiones.
Código PHP:
// [1] por valor
int foo1(int v)
{
v++; // no altera valor
return v;
}
// [2] puntero a la dirección (C/C++)
int foo2(int* v)
{
v++; // altera valor
return *v;
}
// [3] referencia (C++)
int foo3(int& v)
{
v++; // altera valor
return v;
}
// [4] referencia constante(C++)
int foo4(const int& v)
{
v++; // ¡¡ Error !!
return v;
}
En el caso de objetos de la VCL debes usar la forma [2].
Cuando no es necesario que se modifique el valor enviado como argumento es mas eficiente pasarlo como referencia constante [4] que no crea una copia local, con la seguridad adicional de no permitir la modificación involuntaria.
Buscando un poco encontré este apunte específico sobre:
Funciones en C++ Builder
Saludos