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;