尝试重载以下示例中的运算符():
#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。我知道状态保持在() overlading中,但是为什么打印是以相反的顺序显示的?
发布于 2015-04-09 05:24:24
operator <<是为其参数定义的某个函数。未指定函数参数的求值顺序。它们可以从右到左或从左到右进行评估。看起来你的编译器从右到左对它们求值。
https://stackoverflow.com/questions/29525549
复制相似问题