买卖货物问题:
#include <iostream>
using namespace std;
class Goods{
public:
Goods(){
m_pNext = nullptr;
m_weight = 0;
cout << "买入了货物,重量是:" << m_weight << endl;
}
Goods(int weight){
m_pNext = nullptr;
m_weight = weight;
total_weight += m_weight;
cout << "买入了货物,重量是:" << m_weight << endl;
}
~Goods(){
total_weight -= m_weight;
// m_pNext 不是在本类中 new 的,所以也不用 delete
this->m_pNext = nullptr;
cout << "卖出了货物,重量是:" << m_weight << endl;
}
static int getTotalWeight(){
return total_weight;
}
Goods *m_pNext;
private:
int m_weight;
static int total_weight;
};
int Goods::total_weight = 0;
void buy(Goods *&head, int weight){
Goods *pNewGoods = new Goods(weight);
if(head == nullptr){
head = pNewGoods;
}
else{
pNewGoods->m_pNext = head;
head = pNewGoods;
}
}
void sale(Goods *&head){
if(head == nullptr){
cout << "没有货物了" << endl;
return;
}
Goods *temp = head;
head = head->m_pNext;
delete temp;
temp = nullptr;
}
int main( )
{
Goods *head = nullptr;
int choice;
do{
// 提供菜单
cout << "输入 1 进货" << endl;
cout << "输入 2 出货" << endl;
cout << "输入 0 退出" << endl;
cin >> choice;
switch(choice){
case 0:
// 退出
return 0;
case 1:
{
// 进货
int w = 0;
cout << "输入货物重量:" << endl;
cin >> w;
buy(head, w);
break;
}
case 2:
// 出货
sale(head);
break;
}
cout << "目前货物的总重量是:" << Goods::getTotalWeight() << endl;
}while(1);
return 0;
}
输出:
输入 1 进货
输入 2 出货
输入 0 退出
1
输入货物重量:
10
买入了货物,重量是:10
目前货物的总重量是:10
输入 1 进货
输入 2 出货
输入 0 退出
1
输入货物重量:
20
买入了货物,重量是:20
目前货物的总重量是:30
输入 1 进货
输入 2 出货
输入 0 退出
1
输入货物重量:
30
买入了货物,重量是:30
目前货物的总重量是:60
输入 1 进货
输入 2 出货
输入 0 退出
2
卖出了货物,重量是:30
目前货物的总重量是:30
输入 1 进货
输入 2 出货
输入 0 退出
2
卖出了货物,重量是:20
目前货物的总重量是:10
输入 1 进货
输入 2 出货
输入 0 退出
2
卖出了货物,重量是:10
目前货物的总重量是:0
输入 1 进货
输入 2 出货
输入 0 退出
2
没有货物了
目前货物的总重量是:0
输入 1 进货
输入 2 出货
输入 0 退出
0