Определение класса, как следует из названия, является объявлением класса. Если вы не объявляете производную функцию (от чисто виртуальной), компилятор не найдет ее.
Вы должны получать чистые виртуальные функции, только если ваш класс будет создан. Вы можете иметь чисто виртуальную функцию класса A, класс B, который наследуется от класса A, но не имеет производных функций, а затем класс C, который наследует от класса B с повторной реализацией производной функции. В этом случае может быть создан только класс C, так почему компилятор должен добавить объявление производного класса в классе B? Вот почему вы должны указать компилятору, какой класс переопределяет чисто виртуальные функции.