Назад к вопросам
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 реализует конкретное поведение.