Compartilhar via


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;

Confira também

Fluxos de saída