【问题标题】:Overload operator << print backwards [duplicate]重载运算符<<向后打印[重复]
【发布时间】:2016-01-12 18:59:22
【问题描述】:

我重载了两个操作符:operator

运营商

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

为什么输出是反转的?

【问题讨论】:

标签: c++ operator-overloading


【解决方案1】:

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

这将按预期工作:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    相关资源
    最近更新 更多