2. 某顾客到商店购买生活物品,购买:米5斤每斤2.4元,猪肉2斤每斤10元,油一壶50元,请设计一段程序实现顾客购物清单及总价的计算及显示,具体要求如下: (1)编写一个抽象类Goods,在public中包含两个纯虚函数goodsprice与show; (2)编写三个类rice、pork、oil,公共继承Goods类;且每个类都两个私有属性weight,price分别表示单位及单位价格,有一个私有goodsprice函数计算商品价格:weight*price;有一个公有函数show显示商品的价格; (3)编写一个total函数计算所有商品总价; (4)编写main函数显示所有商品的价格及总价。
时间: 2024-03-27 19:38:58 浏览: 60
继承,虚函数,抽象类
3星 · 编辑精心推荐
下面是一份符合要求的程序代码,你可以参考一下:
```c++
#include <iostream>
using namespace std;
// 定义抽象类Goods
class Goods {
public:
virtual double goodsprice() = 0;
virtual void show() = 0;
};
// 定义rice类,继承Goods类
class Rice : public Goods {
private:
double weight, price;
public:
Rice(double w = 0, double p = 2.4) : weight(w), price(p) {}
double goodsprice() { return weight * price; }
void show() { cout << "rice: " << goodsprice() << " yuan" << endl; }
};
// 定义pork类,继承Goods类
class Pork : public Goods {
private:
double weight, price;
public:
Pork(double w = 0, double p = 10) : weight(w), price(p) {}
double goodsprice() { return weight * price; }
void show() { cout << "pork: " << goodsprice() << " yuan" << endl; }
};
// 定义oil类,继承Goods类
class Oil : public Goods {
private:
double weight, price;
public:
Oil(double w = 0, double p = 50) : weight(w), price(p) {}
double goodsprice() { return weight * price; }
void show() { cout << "oil: " << goodsprice() << " yuan" << endl; }
};
// 定义total函数,计算所有商品总价
double total(Goods* goods[], int n) {
double sum = 0;
for (int i = 0; i < n; i++) {
sum += goods[i]->goodsprice();
}
return sum;
}
int main() {
// 创建商品
Rice rice(5);
Pork pork(2);
Oil oil(1);
// 显示商品价格
rice.show();
pork.show();
oil.show();
// 显示总价
Goods* goods[] = {&rice, &pork, &oil};
cout << "total price: " << total(goods, 3) << " yuan" << endl;
return 0;
}
```
该程序中,抽象类`Goods`包含两个纯虚函数`goodsprice`和`show`,三个子类`Rice`、`Pork`和`Oil`都继承了`Goods`类,并实现了其纯虚函数。`total`函数计算了所有商品的总价。在`main`函数中,创建商品并显示其价格,然后计算并显示所有商品的总价。
阅读全文