【发布时间】:2011-08-16 17:52:15
【问题描述】:
请帮助我创建运算符重载函数。我尝试了 2,但我被卡住了。 (谢谢大家上次的帮助!我已经完全完成了:])。
问题 1: operator+(const Currency &rhs) 将添加 2 美元的金额,但不会添加 2 美分的金额,尽管它会保留其中之一的美分。因此,40.20 + 40.20 = 80.20(40 美元和 20 美分分别输入为“int”,为了便于阅读,请按上述方式写...抱歉造成混淆!) // 去掉减法 (如果重载运算符被删除,程序会正确加/减)。
问题 2: 在我有 int Dollars 和 int Cents 之前,现在我只有“金额”。我猜我需要传入这两个,并将它们加在一起作为一个成本 [货币/金额] 并将它们作为“金额”返回并使用它?*我不太确定,另一个我被卡住的原因: (。
如果需要,我可以发布以前分配的原始公共成员。 我暂时保留了之前分配的公共成员的所有旧功能。
class Currency
{
private:
int Dollars;
int Cents;
//string Amount;
public:
// Constructor
Currency(int Dollars = 0, int Cents = 0);
friend Currency operator+(Currency, Currency const &);
// Addition
// Get
int GetDollars();// Need to be removed
int GetCents();// Need to be removed
};
Currency::Currency(int Dollars, int Cents)
{
this->Dollars = Dollars;
this->Cents = Cents;
if(this->Cents >= 100)
{
this->Dollars += 1;
this->Cents -= 100;
}
}
Currency operator+(Currency left, Currency const &right)
{
left.Dollars += right.Dollars;
left.Cents += right.Cents;
while (left.Cents >= 100)
{
left.Cents -= 100;
left.Dollars += 1;
}
return left;
}
int Currency::GetDollars()
{
return Dollars;
}
int Currency::GetCents()
{
return Cents;
}
int main()
{
int currDollars;
int currCents;
//char answer;
cout << "Please enter a dollar amount" << endl;
cin >> currDollars;
cout << "Please enter a cents amount:" << endl;
cin >> currCents;
// Creating and initalizing objects instances of Currency class
Currency payroll(currDollars, currCents);
Currency payroll2(currDollars, currCents);
Currency payroll3;
// Testing overloaded opertator+
payroll3 = payroll + payroll2;
// Displaying test results
cout << "Payroll3 Amount:$ " << payroll3.GetDollars() << "."
<< payroll3.GetCents() << endl << endl;
return 0;
}
</pre></code>
【问题讨论】:
-
@Riotson:代码太大,任何人都无法遵循,请删除不相关的部分并在您遇到问题的地方发布一个简单的代码。
-
抱歉,马上就做!
-
希望更好,如果不让我知道,我会尽量减少它!
-
@Riotson:如果你看到有机会减少它,那就去做吧! Makie it minimilistic,你会注意到它可以帮助人们更好更快地帮助你,并节省每个人的努力。
-
我想我会尝试将它简化为一个具有单个重载运算符(会出现问题)和
main的类,它只是创建一个对象,使用重载运算符,并且(例如)打印出结果来显示问题。
标签: c++ class operator-overloading currency