Überladen des Operators << für eigene Klassen

Ausgabedatenströme die Einfügung den Operator verwenden (<<) für die Standardtypen.Sie können den Operator überladen << auch für Klassen besitzen.

Beispiel

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

Date dt( 1, 2, 92 );
cout << dt;

Zum Abrufen cout ein Objekt nach dem Einfügen Date-Operator überladen zu akzeptieren, den Sie zum Einfügen ostream-Operator um ein Objekt links und rechts Date zu erkennen.Die überladenen Operator <<-Funktion deklariert werden, dann muss die Klasse als Friend Date sodass es die Date privaten Datenmember innerhalb eines Objekts 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;
}
  

Hinweise

Der überladene Operator gibt einen Verweis auf den ursprünglichen ostream-Objekt zurück, das heißt Sie Einfügungen zusammengefasst werden können:

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

Siehe auch

Referenz

Ausgabestreams