C++ · Essencial · Português · Técnico
destrutor
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