& 字符在重载 std::cout 中的功能是什么?
What is the function of the & character in overloading std::cout?
我知道&
字符在 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
。
相关文章:
- 文件系统:复制功能的速度秘诀是什么
- c++20[[no.unique_address]]中的新功能是什么
- 这个Arduino睡眠设置的周边是什么警报功能?
- 这种错误的原因是什么:将"功能"重新定义为不同类型的符号
- 关键字使用的功能是什么?
- 在 C++ 中直接为 FOR 循环提供的 " ; " 的功能是什么?
- & 字符在重载 std::cout 中的功能是什么?
- 当我运行此C 程序时,该功能是什么
- 导出()在QMake中的"inverse"功能是什么?
- 对于一对碰撞机会较低的INT的最小哈希功能是什么
- 一个类本身有一个静态成员的功能是什么?
- 在此地图中,取消运算符的目的和功能是什么
- 在任何编程语言中,递增和递减运算符的功能是什么?
- 这些指令在C++中的功能是什么
- shared_ptr控制块内部的虚拟功能是什么?
- 分隔参数时"|"(垂直线)运算符的确切功能是什么
- 在 SGI STL 的实现中,文件 stl_alloc.h 中模板参数"int inst"的功能是什么?
- " cvWriteFrame "使用垫子 - 图像类型的等效功能是什么?
- 要用于(;;)的功能是什么
- 在.cpp(不是.h)中include guard的功能是什么?