定义抽象类Motion,其中有三个函数:Price()、Amount()和纯虚函数Show()在此基类的基础上派生出Basketba11(表示篮球)和Vo11eyba11类(表示排球)这两个类都将 Motion声明为虚基类且都由Price()函数输入球的价格,由 Amount()函数输入球的个数,都由虚函数Show()计算并显示实际金额。球的实际金额=金额*数量。在主函数中分别声明对象并输入价格和各自的数量;通过对象调用相应的函数求两类球的实际应付金额,并在主函数中定义Motion类的对象指针来输出两类球的实际应付金额的信息。(提示:每个篮球50元需要购买100个,每个排球60元需要购买40个,运行效果如下
时间: 2024-03-16 13:41:54 浏览: 6
抽象类Motion的定义如下:
```c++
#include<iostream>
using namespace std;
class Motion{
public:
virtual double Price() = 0;//输入价格
virtual int Amount() = 0;//输入数量
virtual void Show() = 0;//计算并显示实际金额
};
```
Basketball类的定义如下:
```c++
class Basketball:virtual public Motion{
private:
double price;//单价
int amount;//数量
public:
Basketball(double p, int a);//构造函数
double Price();//重载Price函数
int Amount();//重载Amount函数
void Show();//重载Show函数
};
Basketball::Basketball(double p, int a){//构造函数
price = p;
amount = a;
}
double Basketball::Price(){//重载Price函数
return price;
}
int Basketball::Amount(){//重载Amount函数
return amount;
}
void Basketball::Show(){//重载Show函数
cout<<"Basketball: "<<price*amount<<endl;
}
```
Volleyball类的定义如下:
```c++
class Volleyball:virtual public Motion{
private:
double price;//单价
int amount;//数量
public:
Volleyball(double p, int a);//构造函数
double Price();//重载Price函数
int Amount();//重载Amount函数
void Show();//重载Show函数
};
Volleyball::Volleyball(double p, int a){//构造函数
price = p;
amount = a;
}
double Volleyball::Price(){//重载Price函数
return price;
}
int Volleyball::Amount(){//重载Amount函数
return amount;
}
void Volleyball::Show(){//重载Show函数
cout<<"Volleyball: "<<price*amount<<endl;
}
```
在主函数中,声明对象并输入价格和数量,计算实际应付金额并输出:
```c++
int main(){
Basketball b(50,100);//篮球
Volleyball v(60,40);//排球
b.Show();
v.Show();
Motion *p1 = &b;//指向篮球对象的指针
Motion *p2 = &v;//指向排球对象的指针
p1->Show();
p2->Show();
return 0;
}
```
运行效果如下:
```
Basketball: 5000
Volleyball: 2400
Basketball: 5000
Volleyball: 2400
```