我的作业是我的老师告诉我们在.h文件中使用它:
operator string();
我们不能以任何方式偏离它。
所以在我的.cpp文件中我有:
Currency::operator string(){
stringstream output;
output<<"$";
output<<dollars;//Why does this return garbage for money1+money2??
output<<".";
output<<cents;
string outputstring = output.str();
return outputstring;
}
但是当我执行string(money1+money2)
它会返回垃圾时,当我执行'string(money1)`时,它工作正常。我想知道我做错了什么。
任何帮助都会很棒。
这是我的重载+运算符代码:
Currency& Currency::operator+(const Currency &rhs){
Currency temp;
temp.dollars = dollars + rhs.dollars;
temp.cents = cents + rhs.cents;
temp.simplify();
return temp;
}
注意:我运行了调试器,重载+运算符没有问题;它返回它应该的东西。
答案 0 :(得分:7)
这是我的重载+运算符代码:
您将通过引用返回本地变量。 永远不要这样做。
您应该按值返回:
Currency Currency::operator+(const Currency &rhs)