2016-01-12 2 views
0

я был перегружен два оператора: оператор < < и оператор ++оператор перегрузки << печати назад

оператор < <

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

Также смотрите: http://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points – NathanOliver

+0

Примечание: Не порядок << является неуказан, но порядок двух вызовов '++ AS' –

ответ

0

Нет точки схождения между вашими ++A5, чтобы их можно было оценить в любом порядке.

Это будет работать, как ожидалось:

cout << "++AS sum: " << ++AS; 
cout << " ++AS sum: " << ++AS << endl; 
Смежные вопросы