Compartir vía


Sobrecargar el operador << para las clases propias

Los flujos de salida usan el operador de inserción (<<) para los tipos estándar. También puede sobrecargar el operador << para sus propias clases.

Ejemplo

En el ejemplo de la función write se ha mostrado el uso de una estructura Date. Una fecha es un candidato ideal para una clase de C++ en la que los miembros de fecha (mes, día y año) se ocultan de la vista. Un flujo de salida es el destino lógico para mostrar dicha estructura. Este código muestra una fecha con el objeto cout:

Date dt(1, 2, 92);

cout <<dt;

Para conseguir que cout acepte un objeto Date después del operador de inserción, sobrecargue el operador de inserción para que reconozca un objeto ostream a la izquierda y Date a la derecha. La función de operador << sobrecargada debe declararse después como un elemento de confianza de la clase Date, de manera que pueda tener acceso a los datos privados de un objeto Date.

// overload_date.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

class Date
{
    int mo, da, yr;
public:
    Date(int m, int d, int y)
    {
        mo = m; da = d; yr = y;
    }
    friend ostream& operator<<(ostream& os, const Date& dt);
};

ostream& operator<<(ostream& os, const Date& dt)
{
    os << dt.mo << '/' << dt.da << '/' << dt.yr;
    return os;
}

int main()
{
    Date dt(5, 6, 92);
    cout << dt;
}
5/6/92

Comentarios

El operador sobrecargado devuelve una referencia al objeto ostream original, que significa que puede combinar inserciones:

cout <<"The date is" <<dt <<flush;

Consulte también

Flujos de salida