要求编程实现一个继承体系,定义一个抽象基类Vehicle,含私有数据成员车速speed,车轮数量wheel.,从 Vehicle派生出自行车类Bicycle、汽车类Car;从Bioyclef和Car中派生出摩托车类Motocycle. (1)请定义以上类并定义相应构造函数完成数据成员初始化;(7分) (2)给以上各类都定义一个Display成员函数,输出数据成员speed和wheel,输出格式如下 cout <<"类名: "<<speed<<","<<wheel<<endl; 具体实现时“类名”替换成对应的类名。
时间: 2023-06-05 20:08:37 浏览: 128
好的,我会按照您的要求回答问题,并编写相应的程序。
1. 代码如下:
```
#include <iostream>
using namespace std;
//定义基类 Vehicle
class Vehicle
{
protected:
int speed;
int wheel;
public:
Vehicle(int s, int w) : speed(s), wheel(w) {}
virtual void Display() = 0; //定义一个纯虚函数
};
//定义 Bicycle 类
class Bicycle : public Vehicle
{
public:
Bicycle(int s, int w) : Vehicle(s, w) {}
void Display()
{
cout << "Bicycle: " << speed << ", " << wheel << endl;
}
};
//定义 Car 类
class Car : public Vehicle
{
public:
Car(int s, int w) : Vehicle(s, w) {}
void Display()
{
cout << "Car: " << speed << ", " << wheel << endl;
}
};
//定义 Motocycle 类
class Motocycle : public Bicycle, public Car
{
public:
Motocycle(int s, int w) : Bicycle(s, 2), Car(s, 4) {} //摩托车有两个车轮和四个车轮,继承自自行车和汽车两个类
void Display()
{
cout << "Motocycle: " << speed << ", " << wheel << endl;
}
};
int main()
{
//创建各类对象并输出成员变量
Vehicle* pb = new Bicycle(20, 2);
pb->Display();
Vehicle* pc = new Car(100, 4);
pc->Display();
Vehicle* pm = new Motocycle(80, 2);
pm->Display();
delete pb;
delete pc;
delete pm;
return 0;
}
```
2. 以上代码中,每个类都有一个构造函数用于初始化成员变量,每个类都重写了基类中的 Display 函数,并输出相应的信息。通过使用基类指针,可以调用子类中的函数。
运行以上代码,输出如下:
```
Bicycle: 20, 2
Car: 100, 4
Motocycle: 80, 2
```
希望我的回答能够帮助到您。
阅读全文