我重载了两个运算符: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
为什么输出会反转?
答案 0 :(得分:0)
您的两个++A5
之间没有序列点,因此可以按任何顺序对它们进行评估。
这将按预期工作:
cout << "++AS sum: " << ++AS;
cout << " ++AS sum: " << ++AS << endl;