题目:
定义一个或多个类,来描述以下需求:
汽车,有多个轮胎,一个发动机,品牌,型号, 价格, 行驶里程。
轮胎,有品牌,尺寸,气压。
发动机,有品牌,型号。
代码实现:
1. 汽车类
头文件
#pragma once
#include <string>
#include <vector>
#include "Tyres.h"
#include "Engine.h"
using namespace std;
class Car
{
public:
Car(const string &brand,const string &model,int price,int mileage,
const string &engineBrand,const string &engineModel,const string &tyreBrand="米其林");
string getBrand() const;
string getModel() const;
int getPrice() const;
int getMileage() const;
Tyres getTyres(int i) const;
Engine getEngine() const;
string description() const;
private:
string brand; //品牌
string model; //型号
int price; //价格
int mileage; //里程
Tyres tyres[4]; //轮胎
Engine engine; //发动机
};
实现方法
#include "Car.h"
#include <sstream>
Car::Car(const string & brand, const string & model, int price, int mileage,
const string & engineBrand, const string & engineModel,
const string &tyreBrand):engine(engineBrand, engineModel),
tyres{ tyreBrand, tyreBrand, tyreBrand, tyreBrand }
{
this->brand = brand;
this->model = model;
this->price = price;
this->mileage = mileage;
}
string Car::getBrand() const
{
return brand;
}
string Car::getModel() const
{
return model;
}
int Car::getPrice() const
{
return price;
}
int Car::getMileage() const
{
return mileage;
}
Tyres Car::getTyres(int i) const
{
return tyres[i];
}
Engine Car::getEngine() const
{
return engine;
}
string Car::description() const
{
stringstream ret;
ret << "汽车:" << brand << "-" << model << "价格:" << price
<< "\t引擎:" << engine.description()
<< "\t轮胎:" << tyres[0].description();
return ret.str();
}
2. 轮胎类
头文件
#pragma once
#include <string>
using namespace std;
class Tyres
{
public:
Tyres(const string &brand = "米其林");
string getBrand() const;
float getPressure() const;
string description() const;
private:
string brand; //品牌
float pressure; //气压
};
实现方法
#include <sstream>
#include "Tyres.h"
Tyres::Tyres(const string &brand)
{
this->brand = brand;
this->pressure = 3.5;
}
string Tyres::getBrand() const
{
return brand;
}
float Tyres::getPressure() const
{
return pressure;
}
string Tyres::description() const
{
stringstream ret;
ret << brand << "-轮压:" << pressure;
return ret.str();
}
3. 发动机类
头文件
#pragma once
#include <string>
using namespace std;
class Engine
{
public:
Engine(const string &brand,const string &model);
string getBrand() const;
string getModel() const;
string description() const;
private:
string brand; //品牌
string model; //型号
};
实现方法
#include <sstream>
#include "Engine.h"
Engine::Engine(const string &brand, const string &model)
{
this->brand = brand;
this->model = model;
}
string Engine::getBrand() const
{
return brand;
}
string Engine::getModel() const
{
return model;
}
string Engine::description() const
{
stringstream ret;
ret << brand << "-型号:" << model;
return ret.str();
}
4. 调用
#include <iostream>
#include "Car.h"
int main() {
Car car("保时捷","卡宴",2000000,10,"飞机发动机","三升");
cout << car.description() << endl;
return 0;
}