ExpertiDict

C++ · Essencial · Português · Técnico

destrutor

destɾuˈtoʁsubstantivo

Função especial ~Classe chamada automaticamente quando o objeto sai de escopo ou é deletado. Libera os recursos que o objeto possui, como memória, arquivos e travas.

Onde usar

É a base do RAII: o destrutor roda mesmo quando uma exceção desenrola a pilha. Em code review, observa-se se ele é noexcept e se precisa ser virtual.

Em código

class Arquivo {
  std::FILE* f_;
public:
  Arquivo(const char* n)
    : f_(std::fopen(n, "r")) {}
  ~Arquivo() { if (f_) std::fclose(f_); }
};

Exemplos

O destrutor fecha o arquivo, então não precisa de close manual.

Esse destrutor está lançando exceção e derrubando o programa.

Cuidado

Destrutores não devem lançar exceções, pois isso pode chamar std::terminate durante o desenrolar da pilha.

Antônimos

construtor

Veja também

Todos os termos de C++