Udostępnij za pośrednictwem


Przeciążanie << operatora dla własnych klas

Strumienie wyjściowe używają operatora wstawiania (<<) dla typów standardowych. Możesz również przeciążyć << operator dla własnych klas.

Przykład

W write przykładzie Date funkcji pokazano użycie struktury. Data jest idealnym kandydatem dla klasy C++, w której składowe danych (miesiąc, dzień i rok) są ukryte przed wyświetleniem. Strumień wyjściowy jest logicznym miejscem docelowym do wyświetlania takiej struktury. Ten kod wyświetla datę przy użyciu cout obiektu :

Date dt(1, 2, 92);

cout <<dt;

Aby zaakceptować cout Date obiekt po operatorze wstawiania, przeciąż operator wstawiania, aby rozpoznać ostream obiekt po lewej stronie i po Date prawej stronie. Przeciążona << funkcja operatora musi być następnie zadeklarowana jako przyjazna klasa Date , aby mogła uzyskiwać dostęp do danych prywatnych w Date obiekcie.

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

Uwagi

Przeciążony operator zwraca odwołanie do oryginalnego ostream obiektu, co oznacza, że można połączyć wstawienia:

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

Zobacz też

Strumienie wyjściowe