Чистая виртуальная функция обычно не имеет реализации и создает «абстрактность» класса.
Компилятор не позволит вам создать экземпляр класса, который является абстрактным.Любой класс, производный от этого класса, остается абстрактным, если не реализованы все чистые виртуальные функции, которые он наследует (и он не добавляет никаких новых).Такой класс называется конкретным.
Обратите внимание, что чисто виртуальной функции может быть предоставлена реализация (хотя она не может быть встроенной по причинам синтаксиса).Кроме того, у вас может быть чистый виртуальный деструктор, и тогда ему нужно дать реализацию (даже если она пустую).
Вы указываете чисто виртуальную функцию, добавляя = 0 в конце, таким образом:
virtual void foo(); // not pure
virtual void bar() = 0; // pure virtual