Sdílet prostřednictvím


Přetížení operátoru << pro vlastní třídy

Výstupní datové proudy používají operátor vložení (<<) pro standardní typy. Operátor můžete také přetížit << pro vlastní třídy.

Příklad

Příklad write funkce ukázal použití Date struktury. Datum je ideální kandidát pro třídu C++, ve které jsou datové členy (měsíc, den a rok) skryté v zobrazení. Výstupní datový proud je logickým cílem pro zobrazení takové struktury. Tento kód zobrazí datum pomocí objektu cout :

Date dt(1, 2, 92);

cout <<dt;

Pokud se chcete dostat cout k přijetí Date objektu za operátorem vložení, přetěžte operátor vložení tak, aby rozpoznal ostream objekt vlevo a Date vpravo. Přetížená << funkce operátoru se pak musí deklarovat jako přítel třídy Date , aby měl přístup k privátním datům v rámci objektu 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

Poznámky

Přetížený operátor vrátí odkaz na původní ostream objekt, což znamená, že můžete zkombinovat vložení:

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

Viz také

Výstupní streamy