Um método virtual não tem nenhuma implementação direta e seu comportamento é determinado pelo método com a mesma assinatura que está no nível mais baixo de herança do objeto instanciado. Um destrutor é chamado automaticamente quando o objeto é destruído. Um destrutor virtual em C + + é usado principalmente para evitar vazamentos de recursos através da realização de uma limpeza do objeto. Os passos seguintes explicam como usar destruidores virtuais em C + +. Instruções
1
Determinar quando usar um destrutor virtual. Um destruidor de uma classe deve ser virtual quando um objeto de uma classe derivada será destruído invocando o destruidor de classe base. O destrutor deve ser virtual , quando você exclui um ponteiro para um objeto e é possível que ele aponta para uma classe derivada .
2
Aprenda uma diferença importante entre um processo de destruição e de outros métodos de membro . Em ambos os casos , o método da classe derivada é invocada , se for implementado . No entanto, o destruidor de classe base é chamado posteriormente enquanto isso não acontece com outros métodos
3
Considere o seguinte exemplo de um destrutor virtual : .
# Include class BASE_CLASS {public: BASE_CLASS () { cout //palavra-chave virtual é necessário herevirtual ~ BASE_CLASS () { cout }; classe Derived_Class : BASE_CLASS pública {public: Derived_Class () { cout ~ Derived_Class () { cout }; void main () { BASE_CLASS * p = novo Derived_Class ( ) ; excluir p ; }
4
Observar o uso de uma palavra-chave virtual no exemplo no Passo 3 . Se o destruidor da classe base não foram declarados como virtual, o destrutor da classe derivada não seria chamado.
5
Implementar pelo menos um corpo vazio para um destrutor virtual desde uma função virtual pura não pode ser declarada .