Freigeben über


Überladen des <<-Operators für eigene Klassen

Eingabestreams verwenden die Extraktion (<<)-Operator für die Standardtypen. Sie können auch den <<-Operator für eigene Klassen überladen.

Beispiel

Die write-Beispielfunktion zeigt die Verwendung einer Date-Struktur. Ein Datum ist ein idealer Kandidat für eine C++-Klasse, in der Datenmember (Monat, Tag und Jahr) aus der Ansicht ausgeblendet werden. Ein Ausgabestream ist das logische Ziel für die Anzeige einer solchen Struktur. Dieser Code zeigt ein Datum unter Verwendung des cout-Objekts:

Date dt(1, 2, 92);

cout <<dt;

Damit cout ein Date-Objekt nach den Einfügeoperator akzeptiert, müssen Sie den Einfügeoperator zum Erkennen eines ostream-Objekts auf der linken Seite und eines Date-Objekts auf der rechten Seite überladen. Die überladenen << Operatorfunktion muss dann als Friend der Klasse Date deklariert werden, sodass sie mit einem Date-Objekt auf die privaten Daten zugreifen kann.

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

Hinweise

Der überladene Operator gibt einen Verweis auf das ursprüngliche ostream-Objekt zurück, d.h., Sie können Einfügevorgängen kombinieren:

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

Siehe auch

Output Streams (Ausgabestreams)