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;