Класс, содержащий хотя бы один чисто виртуальный метод, называется абстрактным. Абстрактные классы предназначены для представления общих понятий, которые предполагается конкретизировать в производных классах. Эти классы применяются при определении данных и методов, которые будут общими для различных производных классов. Создание классов, имеющих общим только поведение, осуществляется с помощью базового класса, в котором все функции-члены объявлены в разделе public, а в разделе private данных либо очень мало, либо вовсе нет. Абстрактный класс может использоваться только в качестве базового для других классов — объекты абстрактного класса создавать нельзя, поскольку прямой или косвенный вызов чисто виртуального метода приводит к ошибке при выполнении.
Функции-члены в абстрактных классах определяются через чистые виртуальные функции. Чистые виртуальные функции – функции, которые объявлены с ключом virtual, но не определяются. Они должны быть переопределены в производных классах. В базовом классе они инициализируются с помощью идентификатора (=0). Форма записи чистой виртуальной функции:

virtual <тип возвращаемого значения> <имя функции> ( <список параметров>) = 0;

Нельзя создать объект абстрактного класса, т.к. прямой или косвенный вызов чистого виртуального метода приводит к ошибке при выполнении. Сам абстрактный класс используется только в качестве базового для создания других классов.
При определении абстрактного класса необходимо иметь в виду следующее:
Таким образом, можно создать функцию, параметром которой является указатель на абстрактный класс. На место этого параметра при выполнении программы может передаваться указатель на объект любого производного класса. Это позволяет создавать полиморфные функции, работающие с объектом любого типа в пределах одной иерархии.

Пример 1
class DIsplay_medium
{
public:
virtual Point size() const = 0;
virtual Point cursor() const = 0;
virtual int move_cursor(const Point &p) = 0;
virtual Display char character() const = 0;
virtual string Tine() caonst = 0;
virtual void add (DIsplar char ch) = 0;
virtual void add(const String &s) = 0;
virtual void clear();
};
Пример 2
Class Gambler {
Public:
Virtual int move( )=0;
};