c++设计一个抽象类Vehicle,其中包含2个纯虚函数setdata()和show();由它派生出类Car和类Truck,类Car包含名称、颜色、载客数3个数据成员,类Truck包含名称、颜色、载重量3个数据成员。
时间: 2024-02-07 21:02:20 浏览: 31
下面是C++中实现上述要求的代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
// 抽象类Vehicle
class Vehicle {
public:
virtual void setdata() = 0; // 纯虚函数
virtual void show() = 0; // 纯虚函数
};
// 派生类Car
class Car : public Vehicle {
public:
void setdata() {
cout << "请输入车名:";
cin >> name;
cout << "请输入颜色:";
cin >> color;
cout << "请输入载客数:";
cin >> passengerNum;
}
void show() {
cout << "车名:" << name << endl;
cout << "颜色:" << color << endl;
cout << "载客数:" << passengerNum << endl;
}
private:
string name; // 车名
string color; // 颜色
int passengerNum; // 载客数
};
// 派生类Truck
class Truck : public Vehicle {
public:
void setdata() {
cout << "请输入车名:";
cin >> name;
cout << "请输入颜色:";
cin >> color;
cout << "请输入载重量:";
cin >> loadWeight;
}
void show() {
cout << "车名:" << name << endl;
cout << "颜色:" << color << endl;
cout << "载重量:" << loadWeight << endl;
}
private:
string name; // 车名
string color; // 颜色
double loadWeight; // 载重量
};
int main() {
Vehicle *p1, *p2;
Car car;
Truck truck;
p1 = &car;
p2 = &truck;
p1->setdata();
p1->show();
p2->setdata();
p2->show();
return 0;
}
```
上述代码中,我们定义了一个抽象类`Vehicle`,其中包含了两个纯虚函数`setdata()`和`show()`。然后我们分别定义了两个派生类`Car`和`Truck`,并实现了它们的`setdata()`和`show()`函数。最后在`main()`函数中,我们定义了两个基类指针`p1`和`p2`,让它们分别指向`Car`和`Truck`对象,并通过`p1`和`p2`调用`setdata()`和`show()`函数,实现了多态的效果。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)