Описание тега pure-virtual

Виртуальная функция, которая должна быть реализована каждым неабстрактным производным классом. Обычно это используется, когда программист хочет гарантировать, что функция будет существовать во время выполнения, но когда существует несколько способов определения ее поведения без очевидного "лучшего способа".

Хотя термин "чистый виртуальный" обычно используется только в C++, аналоги существуют и в других языках. В Java, например, абстрактный метод (объявленный с ключевым словом abstract) служит той же цели. Основная причина такого сдвига в терминологии заключается в том, что в Java все методы являются виртуальными (т.е. будут выполнять определение, наиболее близкое к истинному типу объекта во время выполнения, а не определение, наиболее близкое к типу, на который ссылаются).

Однако чисто виртуальный метод указывает, что определение будет отложено до надлежащего определения типа, заставляя полиморфное поведение не указывать реализацию по умолчанию для производных типов, к которой нужно прибегать.

В Java и подобных языках абстрактные методы требуют, чтобы класс также был объявлен как абстрактный. В C++ существование чистого виртуального метода предотвращает создание экземпляра, и программисту не нужно явно отмечать класс как абстрактный.