Задача · Классы и ООП · урок 12 из 13
Задача: фигуры с виртуальной площадью
Абстрактный класс Shape с методом virtual double area() const = 0 уже объявлен. Допишите производные от него классы Circle и Rect, поля добавьте сами. Circle(double radius) — круг радиуса radius, Rect(double w, double h) — прямоугольник со сторонами w и h.
Ещё напишите функцию double total_area(const std::vector<const Shape*>& shapes) — сумму площадей всех фигур. Число π берите из константы kPi, она уже определена в файле.
Circle(1.0).area()→kPiRect(2.0, 3.5).area()→7.0total_area({&c, &r})дляCircle c(1.0)иRect r(2.0, 3.0)→kPi + 6.0
Ограничения: размеры неотрицательные; одна фигура может встречаться в векторе несколько раз; для пустого вектора total_area возвращает 0.