Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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; 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?
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
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...
Neste caso o Delphi irá criar uma "Copia" de "label1" e irá apontar "label2" para ele
Ou seja, se eu modifico label2, na verdade, estou modificando label1, certo?
>
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
há!
Devo ter deixado alguns users com a pulga atráz da orelha! Vou pesquisar sobre umas idéias aqui e posto a resposta...