你有不同的水果,但这些水果都有一个共同点:它们都有重量、购买价格和零售价格。
每种水果的所有这三个都不同,但购买价格和零售价格的公式是相同的。
purchase = weight * fruitPurchaseMultiplier;
retail = purchase * fruitRetailMultipler;
你可以有一个类来处理这个:
#include <cstdint>
class Fruit
{
public:
Fruit(double w, double weightMultiplyForPurchase, uint32_t priceMultiplyForRetail)
: weight{w}
{
purchasePrice = weight * weightMultiplyForPurchase;
retailPrice = purchasePrice * priceMultiplyForRetail;
}
private:
double weight;
double purchasePrice;
double retailPrice;
};
这里我们有一个Fruit具有提到的 3 个特征的它,你可以在它的构造函数中看到它需要一个权重、一个购买修饰符和一个零售修饰符。您可以轻松地获取 ACTUAL 值,但由于它对每种水果都很常见,因此您可以让构造函数为您完成艰苦的工作。
构建水果现在是这样完成的:
int main()
{
Fruit apple{ 0.69, 0.9, 3 };
Fruit banana{ 0.55, 0.75, 5 };
}
在这里,您可以看到我们有一个重量为 0.69 的苹果,其购买价格的修正值为 0.9,售价为 3x。同样,您可以只提供对这 2 种水果可能适用的实际值,但如果您有 30 种水果,那么这样做就不好玩了。
对于这个问题,您不需要继承或多态性。