Em C++, a palavra-chave delete
é usada em duas situações diferentes, dependendo do contexto:
delete
pode ser usado para liberar memória alocada dinamicamente:Quando você aloca memória dinamicamente usando
new
, é necessário liberar essa memória quando não precisar mais dela para evitar vazamentos de memória. O operadordelete
é usado para liberar a memória alocada dinamicamente. Em contrapartida e para uso automático pode ser(e deve sempre que puder) usar ponteiros inteligentes(smart pointers).
delete
para funções:Quando você declara uma função usando delete
, está declarando que essa função é excluída e não pode ser usada. Isso é útil para classes com funções-membro que você deseja impedir que sejam chamados ou herdados.
Suponhamos que você possui essa função abaixo: print_num(int)
que recebe como parâmetro o tipo primitivo int
:
Ao chamar essa função, note que podemos passar os tipos: char
, bool
e float
/double
que ela receberá normalmente:
Ao compilar note que funcionará normalmente:
Para evitar essa sobrecarga usamos a declaração delete
para anular alguns tipos:
Nesse caso o tipo char
e float
/double
já receberão erro ao compilar:
Lembrando que o
float
/double
já receberão um warning(se você estiver usando um LSP), mas compilará normalmente!
Ainda podemos usar também para o tipo bool
também não sobrecarregar:
Sendo assim, para conseguirmos compilar nosso código precisaremos comentar as linhas referentes ao código acima, deixando assim ao final:
template
, ficando like a boss!:Em resumo, dentro desse contexto a palavra-chave delete
em C++ para ‘deletar’ funções quer dizer:
delete
= “eu proíbo isso” ou “isso não existe”Para mais informações acesse aqui.