Ответ
В C++ интерфейс — это абстрактный класс, все методы которого являются чисто виртуальными. Он определяет контракт (набор методов), который обязаны реализовать производные классы. Это ключевой механизм для достижения полиморфизма и разделения интерфейса и реализации.
Пример интерфейса и его реализации:
// Интерфейс (абстрактный класс с чисто виртуальными методами)
class IDrawable {
public:
virtual void Draw() const = 0; // Чисто виртуальный метод
virtual ~IDrawable() = default; // Виртуальный деструктор обязателен
};
// Конкретный класс, реализующий интерфейс
class Circle : public IDrawable {
public:
void Draw() const override {
std::cout << "Drawing a circle." << std::endl;
}
};
// Использование через указатель на базовый класс (интерфейс)
void renderShape(const IDrawable& shape) {
shape.Draw(); // Полиморфный вызов
}
int main() {
Circle c;
renderShape(c); // Output: Drawing a circle.
return 0;
}
Ключевые особенности:
- Создать экземпляр абстрактного класса (интерфейса) нельзя.
- Производный класс должен переопределить все чисто виртуальные методы, иначе он тоже станет абстрактным.
- Виртуальный деструктор в базовом классе гарантирует корректное разрушение объектов производных классов через указатель на базовый.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶