我们有一堂课,教授要求我们重载2010-07-01 NaN
2010-10-01 0.968237
2011-01-01 NaN
2011-04-01 NaN
2011-07-01 0.994817
2011-10-01 1.007370
2012-01-01 1.057660
2012-04-01 0.979955
2012-07-01 1.017180
2012-10-01 0.947547
dtype: float64
以这种方式打印对象(说我们有对象t )
ostream
然后我们被要求以这种方式引出同一物体
cout << t << endl;
这是如何工作的,为什么?
t << cout << endl;
预期的输出是相同的,但是第二种方法令人困惑。为什么会有人要使用它?
答案 0 :(得分:4)
正如任何good book或教程应该告诉您的那样,对于任何运算符X
,表达式a X b
(如果找到合适的重载)将等于operatorX(a, b)
。 / p>
或者如果a
(在a X b
中)已将运算符作为成员函数重载,则等于a.operatorX(b)
。
如果我们现在采用cout << t
,则根据operator<<(cout, t)
的类型将调用cout.operator<<(t)
或t
。
应该容易猜到,将顺序反转为t << cout
将是operator<<(t, cout)
或t.operator<<(cout)
。