Что такое abstract в C++?
Абстрактные классы используются для создания интерфейсов и предоставления общей структуры для производных классов. Абстрактные классы содержат чисто виртуальные функции, которые не имеют реализации в самом классе, оставляя её на усмотрение производных классов.
Объявление абстрактного класса:
// Абстрактный класс
class Shape {
public:
// Чисто виртуальная функция (абстрактная функция)
virtual void draw() const = 0;
// Виртуальный деструктор
virtual ~Shape() = default;
};
В этом примере draw() является чисто виртуальной функцией, что делает класс Shape абстрактным. Абстрактные классы не могут иметь экземпляров.
Производный класс с реализацией:
// Производный класс
class Circle : public Shape {
public:
// Реализация чисто виртуальной функции
void draw() const override {
std::cout << "Drawing a circle." << std::endl;
}
};
Класс Circle наследует от абстрактного класса Shape и реализует его чисто виртуальную функцию draw().
Дополнительные возможности:
- Абстрактные методы:Абстрактные методы не имеют реализации в абстрактных классах, предоставляя интерфейс для производных классов.
- Виртуальные деструкторы:Для абстрактных классов рекомендуется использовать виртуальные деструкторы, чтобы обеспечить правильное удаление объектов при использовании указателей на базовый класс.
Комментарии