IO 的位移操作符

运算符 <<>> 通常用作运算符:

  • std::ostream 重载 << 将变量写入底层流(例如:std::cout
  • std::istream 重载 >> 以从底层流读取变量(例如:std::cin

他们这样做的方式类似,如果你想在 class / struct 之外正常重载它们,除了指定参数不是同一类型:

  • 返回类型是你想要通过引用传递的流(例如,std::ostream),以允许链接(链接:std::cout << a << b;)。示例:std::ostream&
  • lhs 与返回类型相同
  • rhs 是你想要允许重载的类型(即 T),由 const& 传递而不是性能原因的值(rhs 无论如何都不应该改变)。示例:const Vector&

例:

//Overload std::ostream operator<< to allow output from Vector's
std::ostream& operator<<(std::ostream& lhs, const Vector& rhs)
{
    lhs << "x: " << rhs.x << " y: " << rhs.y << " z: " << rhs.z << '\n';
    return lhs;
}

Vector v = { 1, 2, 3};

//Now you can do
std::cout << v;