Destrutor (do inglês, desctructor) é um método invocado quando a classe deve ser destruída. É utilizado normalmente para liberar a memória alocada dinamicamente pela classe e para eliminar as possíveis referências à classe, quando ela não mais existir.
Um destrutor também pode ser chamado quando um objeto sai fora do seu escopo e/ou para fazer a finalização de dispositivos ou subsistemas que tenham sido ativados como classe. Se o programador não proporcionar construtores e um destrutor para uma classe, o compilador assume as ações mais simples. Em outras palavras, caso não seja definido um construtor e um destrutor para a classe, o compilador cria um construtor e um destrutor default, sem código e sem parâmetros, que são chamados, respectivamente, a cada declaração de instância, e cada vez que a instância sai fora do escopo.
Características gerais
Não recebe parâmetros de entrada ou de saída. É permitido apenas um destrutor por classe. Não pode ser definido em Structs, apenas em Classes. Não pode ser herdado ou sobrecarregado. Não possui modificadores de acesso. É invocado automaticamente, não podendo ser chamado. Uma instância pode ser destruída apenas quando nenhum outro recurso utiliza essa instância. O controle de quando o Destrutor será chamado é determinado pelo Garbage Collector. Em linguagens de programação com o recurso coletor de lixo, que retiram da memória os objetos não referenciados, não há método destrutor, uma vez que o Garbage Collector faz o trabalho de destruição dos objetos.
Referências
Categoria:Programação orientada a objetos