Sobes.tech
Junior — Middle

Čo sa rozumie pod virtuálnou funkciou, ktorá nemá implementáciu v základnej triede?

sobes.tech AI

Odpoveď od 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 реализует конкретное поведение.