Ver Mensaje Individual
  #8  
Antiguo 07-09-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Agustín.
Cita:
Empezado por AgustinOrtu Ver Mensaje
Cita:
Empezado por ecfisa Ver Mensaje
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
Código Delphi [-]
...(var Value: TObject);
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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-09-2015 a las 18:48:33.
Responder Con Cita