是否可以像这样obj << cout << endl在C ++中cout对象

时间:2019-06-05 18:22:19

标签: c++ operator-overloading ostream

我们有一堂课,教授要求我们重载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;

预期的输出是相同的,但是第二种方法令人困惑。为什么会有人要使用它?

1 个答案:

答案 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)