定义抽象类Motion,其中有三个函数:Price()、Amount()和纯虚函数Show(),在此基类的基础上派生出Basketba11(表示篮球)和Vo11eyba11类(表示排球),这两个类都将Motion声明为虚基类且都由Price()函数输入球的价格,由 Amount()函数输入球的个数,都由虚函数Show()计算并显示实际金额。球的实际金额=金额*数量。在主函数中分别声明对象并输入价格和各自的数量;通过对象调用相应的函数求两类球的实际应付金额,并在主函数中定义Motion类的对象指针来输出两类球的实际应付金额的信息。(提示:每个篮球50元需要购买100个,每个排球60元需要购买40个,运行效果如下)+请输入购买蓝球的价格和数量:50100 购买篮球的价格为:50,数量为:100.总价格为:5000请输入购买排球的价格和数量:60 40 购买排球的价格为:60,数量为:40,总价格为:2400
时间: 2024-03-20 11:41:02 浏览: 11
好的,我理解了你的问题。下面是对应的代码:
```cpp
#include <iostream>
using namespace std;
class Motion {
public:
virtual void Show() = 0; // 纯虚函数
void Price(float p) { price = p; }
void Amount(int n) { amount = n; }
protected:
float price;
int amount;
};
class Basketba11 : virtual public Motion {
public:
void Show() { cout << "购买篮球的价格为:" << price << ",数量为:" << amount << ",总价格为:" << price * amount << endl; }
};
class Vo11eyba11 : virtual public Motion {
public:
void Show() { cout << "购买排球的价格为:" << price << ",数量为:" << amount << ",总价格为:" << price * amount << endl; }
};
int main() {
Basketba11 basketball;
basketball.Price(50);
basketball.Amount(100);
basketball.Show();
Vo11eyba11 volleyball;
volleyball.Price(60);
volleyball.Amount(40);
volleyball.Show();
Motion* pMotion;
pMotion = &basketball;
pMotion->Show();
pMotion = &volleyball;
pMotion->Show();
return 0;
}
```
输出结果:
```
购买篮球的价格为:50,数量为:100,总价格为:5000
购买排球的价格为:60,数量为:40,总价格为:2400
购买篮球的价格为:50,数量为:100,总价格为:5000
购买排球的价格为:60,数量为:40,总价格为:2400
```