Печать в обратном порядке
Попытка перегрузки оператора () в следующем примере:
#include <iostream>
using namespace std;
class Fib {
public:
Fib() : a0_(1), a1_(1) {}
int operator()();
private:
int a0_, a1_;
};
int Fib::operator()() {
int temp = a0_;
a0_ = a1_;
a1_ = temp + a0_;
return temp;
}
int main() {
Fib fib;
cout << fib() <<"," << fib() << "," << fib() << "," << fib() << "," << fib() << "," << fib() << endl;
}
Он печатает последовательность fib в обратном порядке как 8,5,3,2,1,1. Я понимаю, что состояния хранятся в () наложении, но почему печать отображается в обратном порядке?
1 ответ
Оператор << - это некоторая функция, определенная для ее параметров. Порядок вычисления аргументов функции не указан. Их можно оценить справа налево или слева направо. Кажется, ваш компилятор оценивает их справа налево.