Como excluir funciona
O operador delete invoca a função Excluir do operador.
Para objetos não é do tipo de classe (classe, struct, ou união), o operador delete global é invocado.Para objetos do tipo de classe, o nome da função desalocação será resolvido no escopo global se a expressão de exclusão começa com o operador de resolução de escopo unário (::).Caso contrário, o operador delete invocará o destruidor para um objeto antes da desalocação de memória (se o ponteiro não é nulo).O operador delete pode ser definido em uma base de classe; Se não houver nenhuma tal definição para uma determinada classe, a exclusão de operador global é invocada.Se a expressão de exclusão é usada para desalocar a um objeto de classe cujo tipo estático tem um destruidor virtual, a função de desalocação é resolvida por meio do destruidor virtual do tipo dinâmico do objeto.