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;