Ir ao conteúdo

Destrutores


albertoammar

Posts recomendados

Postado
Se eu crio um destrutor em uma classe, como faço pra ela acontecer? É automática quando o programa é finalizado, ou é tenho que chama-la de algum jeito?

As duas coisas. É uma função como qualquer outra e você tem a liberdade de chama-la a qualquer momento.

Entretanto a boa pratica é não invocar o destrutor pessoalmente e deixar que o compilador o faça no momento oportuno. Se você não chama-lo o compilador o fará por você automaticamente. E esse momento não é no fim do programa, necessariamente. E sim no fim do contexto daquele objeto. Por exemplo, um objeto declarado dentro de uma função existe apenas ali naquele contexto, então o destrutor será chamado quando a função chegue ao final. Muito embora o programa não está limitado a esta função e ainda vai seguir executando.

Faça o teste, crie um programa e coloque dentro do destrutor alguma instrução pra escrever na tela tipo std::cout << "estou no destrutor!"; e então vai poder ver o momento em que o compilador o chama.

Postado

Apenas acrescendo ao que o Violator disse, se o objeto estiver na free store (HEAP) o destrutor será chamado assim que o operador delete der cabo desse objeto.

Ou seja, se você usou new, apenas quando o delete ocorrer o destrutor será chamado,

Perceba que, a boa prática é não usar new e delete "pelados", encapsule dentro de um container e deixe o escopo decidir o fim do container, no fim do container, o destrutor é invocado, deleta-se os objetos da free store e o destrutor dos objetos deletados é invocado.

Para entender melhor o conceito, observe o stl::vector.

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!