Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Parte 5:50 do vídeo.

O instrutor fala que o destructor destruiu a primeira e a segunda conta também. No entanto, salvo engano, esses objetos tinham referências. O garbage collector não atua sobre os objetos sem referência? O primeiro objeto eu entendi o porquê.

1 resposta
solução!

Bom dia Gean!

Também tinha ficado com essa dúvida a princípio e a conclusão que cheguei foi que o método destructor é chamado para as contas 1 e 2 por causa do fim da execução do programa. Ou seja quando o programa finaliza a execução não temos mais variáveis apontando para os endereços das contas 1 e 2 na memória ram e dessa forma o método destructor é chamado e o garbage collector entra em ação. No contexto de execução do programa realmente o destructor só é chamado para a conta 3 a qual não tem variável associada, mas no fim desse contexto todas as contas são destruídas.

Se você observar bem na saída do console do instrutor vai estar "Há mais de uma conta ativa " depois o número "3" que é a saída da última linha do programa e depois dessa última linha do programa temos mais duas vezes "Há mais de uma conta ativa ", o que significa que o destrutor foi chamado para as contas 1 e 2 após o fim da execução.

E até faço uma observação sobre o fato de o instrutor ter falado que a 3ª conta foi excluída já na sua criação, discordo um pouco disso porque se tivesse acontecido não apareceria "3" como quantidade de contas e sim "2". Mas é meio complicado porque pode ser que a velocidade de execução do programa seja mais rápido do que o garbage collector.

Enfim espero ter conseguido explicar.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software