Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpOpAbAC 83 of 150 menu
◀ ▶

Абстрактный класс в C++

Пусть есть класс User, а от него наследуют Employee и Student. Объекты User создавать не будем: база только собирает общее для наследников.

Класс становится абстрактным, если в нем есть метод без тела. В конце объявления вместо тела пишут = 0. Такой метод называют чистым виртуальным: в базе нет тела, его обязан написать потомок.

На фигуре то же самое. У Shape метод area без формулы, формулу пишет потомок. Запишем Shape:

class Shape { public: virtual ~Shape() {} virtual int area() const = 0; }; class Circle : public Shape { public: int radius; Circle(int radius) : radius(radius) {} int area() const override { return 3 * radius * radius; } };

Создадим объект класса Circle и выведем его площадь:

int main() { Circle circle(2); std::cout << circle.area() << "\n"; return 0; }

Спецификатор = 0 не задает число в памяти - это пометка для компилятора: метод нужно переопределить в конкретном потомке. Пока в классе остается хотя бы одна такая декларация, тип считается абстрактным, даже если другие методы уже имеют тела.

Сделайте абстрактный класс Figure, представляющий геометрическую фигуру. Пусть от него наследуют классы Circle, Rectangle и Square.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить