运营商返回值问题

时间:2016-06-26 20:22:58

标签: c++ operator-overloading return-value

我遇到了带有+ =运算符的返回值的问题。

以下是相关的具体代码。如果需要显示更多代码,我将提供:

    double operator+=(double b, const Account& c)
    {
      return b += c.getBalance();
    }

它在main中实现:

    for(int i = 0; i < NUMBER_OF_ACCOUNTS; i++)
    {
        std::cout << i+1 << "- " << (balance += *AC[i]) << std::endl;
    }
    std::cout << "Total Balance: " << balance << std::endl;

我收到的输出:

1- 10302.98
2- 10302.98
3- 201.00
Total Balance: 0.00

输出我想得到:

1- 10302.98
2- 20605.96
3- 20806.96
Total Balance: 20806.96

1 个答案:

答案 0 :(得分:1)

您需要通过引用传递b

double operator+=(double &b, const Account& c)
{
  return b += c.getBalance();
}

而不是

double operator+=(double b, const Account& c)
{
  return b += c.getBalance();
}

否则,考虑一下发生了什么,每次调用都会复制balance(0)的值,而不是实际求和balance别名的内存位置。