Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

bdexterholland

Atribuição de um objeto a outro

Recommended Posts

Lendo um livro que tenho sobre delphi (Entendendo e dominando o Delphi - Tradução do Best-Seller Inside Delphi 2006) fiquei com uma dúvida sobre orientação a objetos no delphi:

 

considere exemplo de código:

var
 label1 : TLabel;
 label2 : TLabel;
begin
 label1 := TLabel.Create(application); //Atribui o application apenas para atribuir alguma coisa
 label2 := Label1;
 {...}

Neste exemplo de código temos uma atribuição de um objeto instanciado a outro não instanciado. Minha dúvida é a seguinte: Como delphi irá se comportar? ele apenas atribuirá o endereço de label1 a label2 e os dois serão os mesmos objetos com identificadores diferentes ou será criado um novo objeto com seu próprio endereço de memória porém com dados iguais?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Até onde sei (posso estar errado), você terá dois objetos distintos, com posições de memória distintas. O que acontecerá apenas é no começo da aplicação o label 2 receber os valores do label 1, por você ter igualado os dois objetos, mas não quer dizer que alterações futuras do label 1 sejam refletidas no label 2. Não testei este código para ver o que acontece e funciona, porque atualmente não tenho o Delphi instalado no meu pc de casa e nem uso-o mais no serviço.

 

[ ]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é, este é o meu pensamento inicial também, mas objetos na prática não passam de ponteiros. Eu tô querendo lembrar o comando que busca o endereço de memória para comparar os endereços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Neste caso o Delphi irá criar uma "Copia" de "label1" e irá apontar "label2" para ele

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou seja, se eu modifico label2, na verdade, estou modificando label1, certo?

 

 

Perfeito a sua observação, no caso para você mudar alguma propriedade do label2, teria que criar uma estância para ele.

 

[]'s

 

Daniel Oliveira

Programador de Sistemas

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.