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

Практика на наследование в C++

Задачи строят иерархию с общим базовым классом, переопределяют виртуальные методы в наследниках и проверяют поведение через указатель на базу.

Сделайте класс Animal с виртуальным методом speak, возвращающим "...". Сделайте классы Dog и Cat, которые возвращают "woof" и "meow". Выведите оба звука через указатель Animal*.

Дан класс:

class Device { public: std::string id; Device(std::string value) : id(value) {} virtual std::string status() { return "off"; } }; class Phone : public Device { public: Phone(std::string value) : Device(value) {} std::string status() override { return "idle"; } };

Создайте Phone("p1"), сохраните в переменную типа Device*. Выведите status и id.

Сделайте класс Base с виртуальным методом tag, возвращающим "B". Сделайте класс Derived, переопределите tag так, чтобы возвращалось "D", и добавьте метод fullTag - склейку Base::tag и tag без разделителя. Выведите fullTag.

Сделайте класс Account с защищенным полем owner. Сделайте класс Savings с методом ownerName, возвращающим owner. Проверьте для владельца "Kim".

Сделайте класс Person с конструктором name. Сделайте класс Worker с параметрами name и role и вызовом конструктора предка. Выведите имя и роль.

Даны типы:

class Shape {}; class Circle : public Shape {}; class Square : public Shape {}; std::vector<Shape*> items = { new Circle(), new Square(), new Circle(), };

Выведите, сколько элементов списка являются Circle, используя dynamic_cast.

Сделайте класс Label с полем text и виртуальным методом render. Сделайте BoldLabel, который возвращает строку в верхнем регистре. Выведите результат для "note" через указатель на Label.

Дана переменная:

class User { public: std::string login; User(std::string value) : login(value) {} virtual ~User() = default; }; class Admin : public User { public: std::string scope; Admin(std::string loginValue, std::string scopeValue) : User(loginValue), scope(scopeValue) {} }; User* u = new Admin("root", "all");

Получите объект Admin из u и выведите scope. Если тип другой, выведите "none".

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