重载string()运算符

时间:2011-10-15 03:39:02

标签: c++

我的作业是我的老师告诉我们在.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;
}

注意:我运行了调试器,重载+运算符没有问题;它返回它应该的东西。

1 个答案:

答案 0 :(得分:7)

  

这是我的重载+运算符代码:

您将通过引用返回本地变量。 永远不要这样做。

您应该按值返回:

Currency Currency::operator+(const Currency &rhs)