Hola Agustín.
Cita:
Empezado por AgustinOrtu
Cita:
Empezado por ecfisa
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
|
Es distinto C++ Builder a Delphi en este sentido?
|
En realidad cuando un parámetro es pasado por valor en
Delphi, el valor es copiado en la pila y la función utiliza dicha copia
Cita:
Cuando se pasa un objeto siempre se pasa una referencia.
|
Si, así es. Los
objetos de
Delphi en sí mismos son una referencia, si declararamos un parámetro como
estaríamos declarando una referencia a referencia.
Pero, si hablamos de
VCL existen diferencias entre ambos lenguajes. Debido que VCL está escrita en
Delphi,
C++ Builder debe compatibilizar con el estilo de referencia del primero, para lo cual usa los apuntadores como sustituto de ellas. (esto haciendo un resumen muy escueto
)
Por ejemplo, en
C++ Builder esta función y su llamado (a diferencia de
Delphi) darían un error de compilación:
Código PHP:
void foo(TLabel lb)
{
lb.Caption = "Hola";
}
...
{
foo(Label1);
}
Espero no haber complicado el tema con la variedad de ejemplos de mi mensaje anterior... Pero también aplican ya que
C++ Builder se puede utilizar con
STL.
Saludos