Как в деструкторе базового класса вызвать переопределённый метод?
Никак. Когда работает деструктор базового класса объект наследник уже не существует. 
Так что "чистите" наследник в деструкторе наследника, а базовый класс в деструкторе базового класса.
Вот старинная статья на хабре, но, на сколько я знаю, и сейчас все работает так.
Порядок вызова деструкторов определяется стандартом языка. Сначала выполняется деструктор дочернего класса, затем деструкторы членов дочернего класса и только потом родительские деструкторы (https://isocpp.org/wiki/faq/dtors#order-dtors-for-...). Поэтому доступные данные и методы в родительском деструкторе ограничены родительским подобъектом и его родителями.
Родительский деструктор можно сделать тривиальным ~Parent() = default (ничего не делать) или чистым виртуальным virtual ~Parent() = 0 (не определен). Только во втором случае невозможно создавать объекты типа "Parent".