&的功能是什么?重载std :: cout中的字符?

时间:2017-03-29 15:22:56

标签: c++ operator-overloading

我理解{+ 1}}字符在c ++中有various uses,但我无法理解下面的代码示例中的函数是什么(取自here)(不是在左边的参数中使用,但在&中使用。

std ostream&

我想我理解&的使用当它表示函数参数内的引用传递时,但我看不出它在函数外面会做什么。

就我所见(这根本不是很远),std::ostream& operator<< (std::ostream &out, const Point &point) { // Since operator<< is a friend of the Point class, we can access Point's members directly. out << "Point(" << point.m_x << ", " << point.m_y << ", " << point.m_z << ")"; return out; } 是一个类,在实例化时,可以通过运算符std::ostream来提供字符串等输出到控制台。然后上面代码中的<<是对&out的实例的引用(将是std::ostream?),在函数内部被std::cout等等,然后返回,以便可以执行多个point.m_x操作。

我猜测&amp;的第一个例子字符以某种方式传达&lt;&lt;在std :: ostream中定义的运算符将以某种方式进行修改,以便允许它与示例Point类的成员一起运行,但我希望对此有更好的理解。

2 个答案:

答案 0 :(得分:2)

这意味着你要返回对象的引用(在这种情况下,它是传入的同一个对象,out。)

这在链接中很有用,它可以让你做些什么 a&lt;&lt; b&lt;&lt; c ....无需创建相关对象的副本。

答案 1 :(得分:1)

  

我想我理解&amp;的使用当它表示函数参数中的引用传递时,但我无法看到它在函数外的作用。

这意味着该函数通过引用返回std::ostream