Existe alguma relação entre destrutor virtual e Vtable
Pergunta
Se escrevermos função virtual acrescenta uma vtable em objeto dessa classe. É verdade para destruidor virtual também? É vtable usado para implementar virtualness de destructor
Solução
Sim. Algumas informações é necessária para permitir o destruidor direito de ser chamado quando o objeto é excluído através de um ponteiro de classe base. Se essa informação é um índice inteiro pequeno ou um ponteiro não importa (embora ligação dinâmica provavelmente implica que é um ponteiro). Naturalmente, que as necessidades de informação a ser adjacente a (interior) o objecto pontiagudo-a.
Adicionando um método virtual de qualquer tipo, incluindo um processo de destruição, a uma classe que não tinha nada antes, vai aumentar sizeof (classe).
Outras dicas
Eu não acredito que o padrão C ++ requer qualquer mecanismo particular para produzir o comportamento correto, mas sim, que é uma implementação típica. Uma classe com pelo menos 1 função virtual tem uma tabela de função (virtual) ponteiros, o destruidor sendo um deles, se ele está marcado virtual.
Sim, é. Desculpe eu não tenho uma referência definitiva para fazer backup de minha afirmação. Mas como mais poderá obter um comportamento diferente quando se usa apenas um ponteiro para o objeto?
Sim. destrutor virtual é como qualquer outro método virtual. entrada vtable vai ser adicionados.
é tratada como qualquer outra função normal e será adicionado à TabelaV.