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

Что подразумевается под виртуальной функцией, не имеющей реализации в базовом классе?

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

sobes.tech AI

В C++ виртуальная функция без реализации в базовом классе называется чистой виртуальной функцией (pure virtual function). Она объявляется с помощью синтаксиса = 0 в объявлении функции:

class Base {
public:
    virtual void foo() = 0; // чистая виртуальная функция
};

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

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

Пример:

class Shape {
public:
    virtual void draw() = 0; // чистая виртуальная функция
};

class Circle : public Shape {
public:
    void draw() override {
        // реализация отрисовки круга
    }
};

Здесь Shape — абстрактный класс, задающий интерфейс, а Circle реализует конкретное поведение.