1

在以下示例中尝试重载 operator():

#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。我知道状态保持在 () 重叠但为什么打印以相反的顺序显示?

4

1 回答 1

1

operator << 是为其参数定义的一些函数。未指定函数参数的评估顺序。可以从右到左或从左到右评估它们。您的编译器似乎从右到左评估它们。

于 2015-04-08T21:24:24.203 回答