Sobrecarregando o operador <<
para as suas próprias classes
Fluxos de saída usam o operador de inserção (<<
) para os tipos padrão. Você também pode sobrecarregar o operador <<
para suas próprias classes.
Exemplo
O exemplo de função write
mostrou o uso de uma estrutura Date
. Uma data é um candidato ideal para uma classe C++ na qual os membros de dados (mês, dia e ano) ficam ocultos. Um fluxo de saída é o destino lógico para a exibição dessa estrutura. Esse código exibe uma data usando o objeto cout
:
Date dt(1, 2, 92);
cout <<dt;
Para obter cout
para aceitar um objeto Date
após o operador de inserção, sobrecarregue o operador de inserção para reconhecer um objeto ostream
à esquerda e um Date
à direita. A função de operador <<
sobrecarregada deve ser declarada como um amiga da classe Date
para que possa acessar os dados privados dentro de um objeto 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
Comentários
O operador sobrecarregado retorna uma referência ao objeto ostream
original, o que significa que é possível combinar as inserções:
cout <<"The date is" <<dt <<flush;