Por que faz sentido dar uma definição para uma função virtual pura?
Scott disse em Effective C ++, 3rd Edition, pg. 43 que para criar uma classe abstrata, precisamos apenas dar a ela um destrutor virtual puro:
class AWOV { // AWOV = "Abstract w/o Virtuals"
public:
virtual ~AWOV() = 0; // declare pure virtual destructor
};
Então, ele continuou dizendo que há uma torção: devemos fornecer uma definição para o destruidor virtual puro:
AWOV::~AWOW() {} // definition of pure virtual dtor
Minha pergunta é, especificando= 0
, para funções virtuais puras, estamos dizendo que a função não pode ter qualquer definição para a classe onde esta função virtual pura é declarada.
Por que é OK fornecer uma definição (mesmo vazia) para o destruidor virtual puro aqui?