Клас, що містить хоча б один чисто віртуальний метод, називається абстрактним. Абстрактні класи призначені для представлення загальних понять, що передбачається конкретизувати в похідних класах. Абстрактний клас може використовуватися тільки в якості базового для інших класів — об'єкти абстрактного класу створювати не можна, оскільки прямий або непрямий виклик чисто віртуального методу приводить до помилки при виконанні.
При визначенні абстрактного класу необхідно мати на увазі наступне:
абстрактний клас не можна використовувати при явному приведенні типів, для опису типу параметра та типу повертаємого функцією значення;
допускається повідомляти покажчики і посилання на абстрактний клас, якщо при ініціалізації не потрібно створювати тимчасовий об'єкт;
якщо клас, похідний від абстрактного, не визначає всі чисто віртуальні функції, він також є абстрактним.
Таким чином, можна створити функцію, параметром якої є покажчик на абстрактний клас. На місце цього параметра при виконанні програми може передаватися покажчик на об'єкт будь-якого похідного класу. Це дозволяє створювати поліморфні функції, що працюють з об'єктом будь-якого типу в межах однієї ієрархії.