Скотт сказал на Effective С++, 3rd Edition, pg. 43 что для создания абстрактного класса нам просто нужно дать ему чистый виртуальный деструктор:
class AWOV { // AWOV = "Abstract w/o Virtuals"
public:
virtual ~AWOV() = 0; // declare pure virtual destructor
};
Затем он продолжал говорить, что есть один поворот: мы должны предоставить определение для чистого виртуального деструктора:
AWOV::~AWOW() {} // definition of pure virtual dtor
Мой вопрос состоит в том, что, указав = 0
, для чистых виртуальных функций, мы говорим, что функция не может иметь никакого определения для класса, в котором объявлена эта чистая виртуальная функция.
Почему это нормально, чтобы дать определение (даже пустое) для чистого виртуального деструктора здесь?