C++ I / O的位移位运算符

示例

运算符<<和>>通常用作“写”和“读”运算符:

  • 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};

//现在你可以做
std::cout << v;