Por que precisamos de um destrutor virtual puro em C ++?

Eu entendo a necessidade de um destruidor virtual. Mas por que precisamos de um destrutor virtual puro? Em um dos artigos do C ++, o autor mencionou que usamos o destruidor virtual puro quando queremos fazer um resumo de classe.

Mas podemos fazer um resumo de classe, fazendo qualquer uma das funções de membro como virtual puro.

Então minhas perguntas são

Quando nós realmente fazemos um destruidor virtual puro? Alguém pode dar um bom exemplo em tempo real?

Quando estamos criando classes abstratas, é uma boa prática tornar o destruidor também virtual puro? Se sim ... então por quê?

questionAnswers(12)

yourAnswerToTheQuestion