Sobes.tech
Назад к вопросам
Junior — Middle
90

В C++ существует ли концепция интерфейса, аналогичная в других языках программирования?

Компании, где спрашивали
ГК Адепт

Ответ от нейросети

sobes.tech AI

В C++ нет отдельной ключевой конструкции «interface», как в Java или C#. Однако аналог интерфейса достигается с помощью абстрактных классов, которые содержат только чисто виртуальные функции (pure virtual functions).

Пример интерфейса в C++:

class IShape {
public:
    virtual double area() const = 0;  // чисто виртуальная функция
    virtual ~IShape() {}               // виртуальный деструктор
};

class Circle : public IShape {
    double radius;
public:
    Circle(double r) : radius(r) {}
    double area() const override {
        return 3.14159 * radius * radius;
    }
};

Такой абстрактный класс нельзя инстанцировать напрямую, и он задаёт контракт, который должны реализовать наследники. Это и есть аналог интерфейса.