Що таке 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().
Додаткові можливості:
- Абстрактні методи:Абстрактні методи не мають реалізації в абстрактних класах, надаючи інтерфейс для похідних класів.
- Віртуальні деструктори:Для абстрактних класів рекомендується використовувати віртуальні деструктори, щоб забезпечити правильне видалення об'єктів під час використання покажчиків на базовий клас.
Коментарі