Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda O Que É um Destrutor da Classe | Construtores e Destrutores
C++ Poo
course content

Conteúdo do Curso

C++ Poo

C++ Poo

1. Fundamentos de POO em C++
2. Construtores e Destrutores
3. Visão Geral do Encapsulamento
4. Visão Geral de Herança
5. Visão Geral do Polimorfismo

book
O Que É um Destrutor da Classe

Note
Definição

Destrutores são funções membro especiais que são invocadas quando o tempo de vida de um object's chega ao fim. Sua principal finalidade é liberar recursos que o objeto possa ter adquirido durante seu tempo de vida.

Sintaxe do Destrutor

Apesar de terem propósitos opostos, criar um destrutor é muito semelhante a criar um construtor. Eles compartilham praticamente os mesmos princípios de declaração. A abordagem geral para criar um é:

  • Nome: possui o mesmo nome da classe, mas é precedido por um til (~);

  • Sem tipo de retorno: não possui tipo de retorno, nem mesmo void;

  • Sem parâmetros: não pode receber parâmetros;

  • Invocação automática: é chamado automaticamente pelo compilador quando o objeto sai de escopo ou é explicitamente deletado.

Invocação Automática de Destrutores

A invocação automática de destrutores refere-se à chamada automática do destrutor. Isso garante que os recursos mantidos pelo objeto sejam devidamente liberados, ajudando assim a evitar vazamentos de memória e de recursos.

scope.cpp

scope.cpp

delete.cpp

delete.cpp

termination.cpp

termination.cpp

copy
123456
int main() { { Example obj; // Object created } // Object goes out of scope here, destructor is invoked }
  • quando um objeto sai de escopo;

  • quando o operador delete é utilizado para excluir objetos alocados dinamicamente;

  • quando o programa é finalizado.

Necessidade dos Destrutores

O principal objetivo de um destrutor é liberar os recursos adquiridos pelo objeto durante seu tempo de vida. Isso inclui fechar arquivos abertos, desalocar memória (usando new) ou tarefas semelhantes.

ResourceHolder.cpp

ResourceHolder.cpp

FileHandler.cpp

FileHandler.cpp

copy
123456789101112
class ResourceHolder { public: DynamicArray(int size) { data = new int(100); } ~DynamicArray() { delete data; } private: int* data; };

1. Qual é o principal objetivo de um destrutor?

2. Qual é a sintaxe para declarar um destrutor?

question mark

Qual é o principal objetivo de um destrutor?

Select the correct answer

question mark

Qual é a sintaxe para declarar um destrutor?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 7

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

course content

Conteúdo do Curso

C++ Poo

C++ Poo

1. Fundamentos de POO em C++
2. Construtores e Destrutores
3. Visão Geral do Encapsulamento
4. Visão Geral de Herança
5. Visão Geral do Polimorfismo

book
O Que É um Destrutor da Classe

Note
Definição

Destrutores são funções membro especiais que são invocadas quando o tempo de vida de um object's chega ao fim. Sua principal finalidade é liberar recursos que o objeto possa ter adquirido durante seu tempo de vida.

Sintaxe do Destrutor

Apesar de terem propósitos opostos, criar um destrutor é muito semelhante a criar um construtor. Eles compartilham praticamente os mesmos princípios de declaração. A abordagem geral para criar um é:

  • Nome: possui o mesmo nome da classe, mas é precedido por um til (~);

  • Sem tipo de retorno: não possui tipo de retorno, nem mesmo void;

  • Sem parâmetros: não pode receber parâmetros;

  • Invocação automática: é chamado automaticamente pelo compilador quando o objeto sai de escopo ou é explicitamente deletado.

Invocação Automática de Destrutores

A invocação automática de destrutores refere-se à chamada automática do destrutor. Isso garante que os recursos mantidos pelo objeto sejam devidamente liberados, ajudando assim a evitar vazamentos de memória e de recursos.

scope.cpp

scope.cpp

delete.cpp

delete.cpp

termination.cpp

termination.cpp

copy
123456
int main() { { Example obj; // Object created } // Object goes out of scope here, destructor is invoked }
  • quando um objeto sai de escopo;

  • quando o operador delete é utilizado para excluir objetos alocados dinamicamente;

  • quando o programa é finalizado.

Necessidade dos Destrutores

O principal objetivo de um destrutor é liberar os recursos adquiridos pelo objeto durante seu tempo de vida. Isso inclui fechar arquivos abertos, desalocar memória (usando new) ou tarefas semelhantes.

ResourceHolder.cpp

ResourceHolder.cpp

FileHandler.cpp

FileHandler.cpp

copy
123456789101112
class ResourceHolder { public: DynamicArray(int size) { data = new int(100); } ~DynamicArray() { delete data; } private: int* data; };

1. Qual é o principal objetivo de um destrutor?

2. Qual é a sintaxe para declarar um destrutor?

question mark

Qual é o principal objetivo de um destrutor?

Select the correct answer

question mark

Qual é a sintaxe para declarar um destrutor?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 7
some-alt