C++ Operadores de cambio de bit para E / S


Ejemplo

Los operadores << y >> se utilizan comúnmente como operadores de "escritura" y "lectura":

  • std::ostream overloads << para escribir variables en el flujo subyacente (ejemplo: std::cout )
  • std::istream overloads >> para leer desde el flujo subyacente a una variable (ejemplo: std::cin )

La forma en que lo hacen es similar si desea sobrecargarlos "normalmente" fuera de la class / struct , excepto que la especificación de los argumentos no es del mismo tipo:

  • Tipo de retorno es el flujo del que desea sobrecargar (por ejemplo, std::ostream ) pasado por referencia, para permitir el encadenamiento (Encadenamiento: std::cout << a << b; ). Ejemplo: std::ostream&
  • lhs sería el mismo que el tipo de retorno
  • rhs es el tipo desde el que desea permitir la sobrecarga (es decir, T ), pasado por const& lugar de valor por razones de rendimiento ( rhs no debería cambiarse de todos modos). Ejemplo: const Vector& .

Ejemplo:

//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;