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

Реализация в потомке в C++

Реализация в потомке снимает абстрактность метода: компилятор находит тело там, где создают объект.

В наследнике пишут метод с тем же именем и теми же параметрами и помечают его override. Запишем Student, который увеличивает стипендию, и выведем результат:

#include <string> class User { public: virtual ~User() {} std::string name; User(std::string name) : name(name) {} virtual void increaseRevenue(int value) = 0; }; class Employee : public User { public: int salary; Employee(std::string name, int salary) : User(name), salary(salary) {} void increaseRevenue(int value) override { salary += value; } }; class Student : public User { public: int scholarship; Student(std::string name, int scholarship) : User(name), scholarship(scholarship) {} void increaseRevenue(int value) override { scholarship += value; } };

Создадим объект класса Student и увеличим ему стипендию:

int main() { Student student("ann", 500); student.increaseRevenue(50); std::cout << student.scholarship << "\n"; return 0; }

Если потомок не переопределит хотя бы один чистый метод родителя, его тоже нельзя будет инстанцировать - класс останется абстрактным. Переопределение должно совпадать по const и типу возвращаемого значения.

Напишите реализацию методов площади и периметра в классах Circle, Rectangle и Square для вашего Figure.

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