Конструктор, деструктор и функция печати для класса
Автор: DanVil • Декабрь 7, 2022 • Лабораторная работа • 706 Слов (3 Страниц) • 184 Просмотры
Цель работы: научиться определять конструктор, деструктор и функцию печати для класса. Научиться определять виртуальные функции и работать с базовым классом и классом-наследником.
Задание. Создать класс автомобиль, имеющий марку (указатель на строку), число цилиндров, мощность. Определить конструктор, деструктор и функцию печати. Создать public-производный класс – грузовики, имеющий грузоподъемность кузова. Определить конструктор с разным числом параметров, деструктор, функцию печати. Определить функции переназначения марки и грузоподъемности как виртуальные. Программа должна содержать меню, позволяющее осуществить проверку всех методов классов.
Код файла Source.cpp:
#include <iostream>
#include "Truck.hpp"
int main() {
Truck truck{ "Mersedes", 6, 394, 18.0 };
std::cout
<< truck;
truck.setBrand("MAN");
std::cout
<< truck;
return 0;
}
Код заголовочного файла Truck.hpp:
#ifndef TRUCK_HPP
#define TRUCK_HPP
#include "Machine.hpp"
class Truck : public Machine {
public:
Truck();
Truck(std::string brand, std::size_t cylinders, double power, double capacity);
Truck(const Truck& truck);
~Truck();
Truck& operator=(const Truck& rhs);
friend std::ostream& operator<<(std::ostream& os, const Truck& rhs);
void setBrand(std::string brand);
private:
double m_capacity;
};
#endif // TRUCK_HPP
Код файла Truck.cpp:
#include "Truck.hpp"
Truck::Truck()
: Machine(), m_capacity(0.0) {
}
Truck::Truck(std::string brand, std::size_t cylinders, double power, double capacity)
: Machine(brand, cylinders, power), m_capacity(capacity) {
}
Truck::Truck(const Truck& truck)
: Machine(truck) {
m_capacity = truck.m_capacity;
}
Truck::~Truck() {
}
Truck& Truck::operator=(const Truck& rhs) {
if (this == &rhs) {
return *this;
}
Machine::operator=(rhs);
m_capacity = rhs.m_capacity;
return *this;
}
std::ostream& operator<<(std::ostream& os, const Truck& rhs) {
os
<< "Brand: " << rhs.getBrand() << std::endl
<< "Cylinders: " << rhs.getCylinders() << std::endl
...