/
vs7
/
cpp-mod5
Обзор
Документация
Войти
/
vs7
/
cpp-mod5
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
main.cpp
98 строк
3 KB
Vladislav Gevlich
car
13 авг 2024, 12:22
13 авг 2024, 12:22
fbc1c2c
Код
Авторство
О чём код?
#include <iostream> #include <string> // Базовый класс Car class Car { private: std::string make; // торговая марка int cylinders; // число цилиндров int power; // мощность static int carCount; // счетчик созданных объектов public: // Конструкторы Car() : make(""), cylinders(0), power(0) { ++carCount; } Car(const std::string& make, int cylinders, int power) : make(make), cylinders(cylinders), power(power) { ++carCount; } // Деструктор virtual ~Car() { --carCount; } // Перегрузка операторов ввода/вывода friend std::ostream& operator<<(std::ostream& os, const Car& car) { os << "Make: " << car.make << "\nCylinders: " << car.cylinders << "\nPower: " << car.power; return os; } friend std::istream& operator>>(std::istream& is, Car& car) { std::cout << "Enter make: "; is >> car.make; std::cout << "Enter number of cylinders: "; is >> car.cylinders; std::cout << "Enter power: "; is >> car.power; return is; } // Дружественная функция для вывода кол-ва всех созданных объектов Car и его производных классов friend int getCount(); protected: // Методы для доступа к полям std::string getMake() const { return make; } int getCylinders() const { return cylinders; } int getPower() const { return power; } }; // Инициализация статического члена int Car::carCount = 0; // Производный класс Lorry (грузовик) class Lorry : public Car { private: int loadCapacity; // грузоподъёмность кузова public: // Конструкторы Lorry() : Car(), loadCapacity(0) {} Lorry(const std::string& make, int cylinders, int power, int loadCapacity) : Car(make, cylinders, power), loadCapacity(loadCapacity) {} // Перегрузка операторов ввода/вывода friend std::ostream& operator<<(std::ostream& os, const Lorry& lorry) { os << static_cast<const Car&>(lorry); os << "\nLoad Capacity: " << lorry.loadCapacity; return os; } friend std::istream& operator>>(std::istream& is, Lorry& lorry) { is >> static_cast<Car&>(lorry); std::cout << "Enter load capacity: "; is >> lorry.loadCapacity; return is; } }; // Дружественная функция для подсчета всех созданных объектов Car и его производных классов int getCount() { return Car::carCount; } int main() { Car car1("Toyota", 4, 150); Lorry lorry1("Ford", 6, 250, 5000); std::cout << "Car 1 details:\n" << car1 << "\n\n"; std::cout << "Lorry 1 details:\n" << lorry1 << "\n\n"; std::cout << "Total number of Car and Lorry objects created: " << getCount() << std::endl; return 0; }