geekbrains_oop_cpp/lesson_3/exercise_2.hpp

57 lines
1.4 KiB
C++

#ifndef EXERCISE_2_HPP_
#define EXERCISE_2_HPP_
#include <iostream>
class Car
{
private:
std::string m_company;
std::string m_model;
protected:
std::string getCompany() const
{
return m_company;
}
std::string getModel() const
{
return m_model;
}
public:
Car(std::string company, std::string model) : m_company(company), m_model(model)
{
std::cout << "Транспортное средство компании " + getCompany() + ", модель " + getModel() << std::endl;
}
};
class PassengerCar : virtual public Car
{
public:
PassengerCar(std::string company, std::string model) : Car(company, model)
{
std::cout << "Легковой автомобиль компании " + getCompany() + ", модель " + getModel() << std::endl;
}
};
class Bus : virtual public Car
{
public:
Bus(std::string company, std::string model) : Car(company, model)
{
std::cout << "Автобус компании " + getCompany() + ", модель " + getModel() << std::endl;
}
};
class Minivan : public PassengerCar, public Bus
{
public:
Minivan(std::string company, std::string model) :
Car(company, model), PassengerCar(company, model), Bus(company, model)
{
std::cout << "Минивэн компании " + getCompany() + ", модель " + getModel() << std::endl;
}
};
#endif