Интерфейсный класс в C++ - это класс, который определяет набор функций (интерфейс), которые должны быть реализованы производными классами. Он не может быть инстанцирован напрямую, так как содержит чисто виртуальные функции и, возможно, поля данных.
Ключевые особенности:
- Содержит чисто виртуальные функции: Функция объявлена как чисто виртуальная при помощи
= 0; после объявления. Производный класс обязан переопределить все чисто виртуальные функции, чтобы стать конкретным классом (который можно инстанцировать).
- Абстрактный класс: Интерфейсный класс является частным случаем абстрактного класса.
- Нет реализации методов: Обычно интерфейсный класс не содержит реализации для виртуальных функций. В редких случаях может быть реализация для невиртуальных функций или виртуальных функций (если нужны какие-то общие функциональные возможности, но тогда он уже не "чисто" интерфейсный).
- Используется для полиморфизма: Позволяет работать с объектами разных производных классов через указатель или ссылку на базовый интерфейсный класс.
- Построение контрактов: Определяет "что должен делать" класс, не указывая "как".
Пример:
cpp