商店经销一种货物,货物成箱购进,成箱卖出,购进和卖出时以重量为单位,各箱的重量不一样,单价不一样,因此商店需要记录下目前库存的货物的总重量和总价值。编写一个程序,通过定义类Carlo来模拟商店货物购进和卖出的情况。 (本题目主要练习静态数据成员的使用,定义私有变量存每件货物的价格和重量,用静态数据成员存货物的总重量和总价钱,定义构造函数和析构函数,当定义新的对象完成初始化的功能和删除对象时,从总重量和总价钱中减去对象的重量和价格)
时间: 2024-03-23 09:36:43 浏览: 78
好的,以下是根据您的要求编写的程序,可以满足您的需求:
```cpp
#include <iostream>
using namespace std;
class Carlo {
private:
double price; // 每件货物的价格
double weight; // 每件货物的重量
static double totalWeight; // 总重量
static double totalPrice; // 总价值
public:
Carlo(double p, double w) {
price = p;
weight = w;
totalWeight += w;
totalPrice += p * w;
}
~Carlo() {
totalWeight -= weight;
totalPrice -= price * weight;
}
static double getTotalWeight() {
return totalWeight;
}
static double getTotalPrice() {
return totalPrice;
}
};
double Carlo::totalWeight = 0;
double Carlo::totalPrice = 0;
int main() {
Carlo c1(2.5, 10);
Carlo c2(3.2, 15);
cout << "当前库存货物总重量为:" << Carlo::getTotalWeight() << endl;
cout << "当前库存货物总价值为:" << Carlo::getTotalPrice() << endl;
{
Carlo c3(4.1, 20);
cout << "当前库存货物总重量为:" << Carlo::getTotalWeight() << endl;
cout << "当前库存货物总价值为:" << Carlo::getTotalPrice() << endl;
}
cout << "当前库存货物总重量为:" << Carlo::getTotalWeight() << endl;
cout << "当前库存货物总价值为:" << Carlo::getTotalPrice() << endl;
return 0;
}
```
以上程序中,我们定义了一个名为`Carlo`的类,它包含了每件货物的价格和重量以及所有货物的总重量和总价值。当我们定义一个新的`Carlo`对象时,它的构造函数会把该对象的重量和价格加入到总重量和总价值中;当我们删除一个`Carlo`对象时,它的析构函数会从总重量和总价值中减去该对象对应的重量和价格。同时,我们还定义了两个静态成员函数,用于获取当前所有货物的总重量和总价值。
在程序中,我们创建了三个`Carlo`对象,分别表示三种不同的货物。我们在创建第三个对象时,使用了一个花括号块,这样可以让第三个对象的作用域仅限于该块中,从而可以测试析构函数的功能。最后,我们输出了所有货物的总重量和总价值。
希望以上程序能够满足您的要求,如果您有任何疑问或需要进一步帮助,请随时告诉我。
阅读全文