过载运算符<<向后打印

时间:2016-01-12 18:59:23

标签: c++ operator-overloading

我重载了两个运算符:operator<<和operator ++

运营商LT;<

ArithmeticSequence & ArithmeticSequence::operator++()
{
    this->lastElement += goToNext;
    this->sum += lastElement;

    return *this;
}

运算符++

ostream & operator<<(ostream & out, const ArithmeticSequence as)
{
    out << as.sum;
    return out;
}

现在主要是:

ArithmeticSequence AS(1.3, 2.5);
cout << "++AS sum: " << ++AS << " ++AS sum: " << ++AS << endl;

输出:

++AS sum: 20.2 ++AS sum: 11.4 

正确的输出需要是:

++AS sum: 11.4 ++AS sum: 20.2

为什么输出会反转?

1 个答案:

答案 0 :(得分:0)

您的两个++A5之间没有序列点,因此可以按任何顺序对它们进行评估。

这将按预期工作:

 cout << "++AS sum: " << ++AS;
 cout << " ++AS sum: " << ++AS << endl;