。从Vehicle类派生出Car类和Truck类,再为其加入合适的数据成员和成员函数;从Car类派生出两个类,分别代表两种特定的小车,从Truck类派生两个类,代表特定的两种卡车。用c++编程
时间: 2024-05-05 10:19:18 浏览: 16
好的,您的问题是如下:
```c
#include <iostream>
#include <string>
using namespace std;
/* Vehicle类 */
class Vehicle {
public:
Vehicle(){}
virtual ~Vehicle(){}
virtual void run() = 0;
virtual void stop() = 0;
protected:
string m_type; // 车辆类型
};
/* Car类 */
class Car : public Vehicle {
public:
Car(){}
virtual ~Car(){}
virtual void run(){
cout << "Car is running!" << endl;
}
virtual void stop(){
cout << "Car has stopped!" << endl;
}
};
/* Truck类 */
class Truck : public Vehicle {
public:
Truck(){}
virtual ~Truck(){}
virtual void run(){
cout << "Truck is running!" << endl;
}
virtual void stop(){
cout << "Truck has stopped!" << endl;
}
};
/* MiniBus类,继承自Car */
class MiniBus : public Car {
public:
MiniBus(){}
virtual ~MiniBus(){}
virtual void run(){
cout << "MiniBus is running!" << endl;
}
virtual void stop(){
cout << "MiniBus has stopped!" << endl;
}
};
/* SportCar类,继承自Car */
class SportCar : public Car {
public:
SportCar(){}
virtual ~SportCar(){}
virtual void run(){
cout << "Sport Car is running!" << endl;
}
virtual void stop(){
cout << "Sport Car has stopped!" << endl;
}
};
/* PickupTruck类,继承自Truck */
class PickupTruck : public Truck {
public:
PickupTruck(){}
virtual ~PickupTruck(){}
virtual void run(){
cout << "Pickup Truck is running!" << endl;
}
virtual void stop(){
cout << "Pickup Truck has stopped!" << endl;
}
};
/* DumpTruck类,继承自Truck */
class DumpTruck : public Truck {
public:
DumpTruck(){}
virtual ~DumpTruck(){}
virtual void run(){
cout << "Dump Truck is running!" << endl;
}
virtual void stop(){
cout << "Dump Truck has stopped!" << endl;
}
};
int main(){
Car *myCar = new MiniBus();
myCar->run();
myCar->stop();
delete myCar;
myCar = NULL;
return 0;
}
```
这是一个简单的使用 C++ 实现继承、多态的例子。通过继承和虚函数,实现了从基类 `Vehicle` 到 `Car` 到 `MiniBus` 和 `SportCar`、从 `Vehicle` 到 `Truck` 到 `PickupTruck` 和 `DumpTruck` 的类的继承关系,并实现了多态。
其中,`MiniBus`、`SportCar`、`PickupTruck` 和 `DumpTruck` 在原有类的基础上增加了一些特殊的属性或方法。可以通过动态绑定来使用这些类对象的特殊功能。在代码中,使用了 `new` 来创建 `MiniBus` 对象,并将其赋值给 `Car` 类型的指针。这样,可以通过 `myCar` 指针来调用 `MiniBus` 类中的成员函数。在使用完 `myCar` 指针后,需要用 `delete` 来进行释放内存的操作。
希望这个例子能够帮到您。
相关推荐
![text/x-c++](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![text/x-c++](https://img-home.csdnimg.cn/images/20210720083646.png)