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

What is the function of the & character in overloading std::cout?

本文关键字:功能 是什么 cout 重载 std 字符      更新时间:2023-10-16

我知道&字符在 c++ 中有各种用途,但我很难理解它在下面的代码示例中的功能(取自此处)(不是它在左参数中的用法,而是它在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等,然后返回,以便可以执行多个<<操作。

我猜 & 字符的第一个实例以某种方式传达了 std::ostream 中定义的<<运算符将以某种方式修改,以便允许它与示例 Point 类的成员一起运行,但我想有比这更好的理解。

这意味着您正在返回对该对象的引用(在本例中,它是传入的同一对象 out。

这在链接中很有用,它可以让您执行以下操作: a <<b <<c ....无需创建相关对象的副本。

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

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