Sobes.tech
Junior — Middle

Puoi spiegare cos'è una classe astratta e in cosa si differenzia da una classe normale?

sobes.tech AI

Risposta dell'AI

Абстрактный класс — это класс, который не предназначен для создания экземпляров напрямую, а служит как базовый для других классов. В C++ абстрактный класс определяется наличием хотя бы одной чисто виртуальной функции (pure virtual function).

Отличия абстрактного класса от обычного:

  • Нельзя создать объект абстрактного класса напрямую.
  • Содержит по крайней мере одну чисто виртуальную функцию, которую должны реализовать производные классы.
  • Используется для определения интерфейса и общей функциональности, которую должны наследовать подклассы.

Пример:

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

class Derived : public AbstractBase {
public:
    void doSomething() override {
        // реализация
    }
};

// AbstractBase obj; // ошибка, нельзя создать объект абстрактного класса
Derived d; // корректно