Sobrecarregando o operador << para as suas próprias classes
Os fluxos de saída usam o operador insert (<<) para tipos padrão. Você também pode sobrecarregar o operador de << para suas próprias classes.
Exemplo
O exemplo da função de write mostra o uso de uma estrutura de Date . Uma data é um candidato ideal para a classe criando c em que os membros de dados (mês, dia e ano), são ocultados de exibição. Um fluxo de saída é o destino lógico para exibir essa estrutura. Este código exibe uma data usando o objeto de cout :
Date dt( 1, 2, 92 );
cout << dt;
Para obter cout para aceitar um objeto de Date após o operador insert, carga do operador insert para reconhecer um objeto de ostream à esquerda e um Date à direita. A função sobrecarregada do operador de << deve ser declarada como um amigo da classe Date portanto ele pode acessar os dados confidenciais dentro de um objeto de 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;
}
Comentários
O operador sobrecarregado retorna uma referência ao objeto original de ostream , o que significa você pode combinar inserções:
cout << "The date is" << dt << flush;