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;