Поделиться через


Перегружать оператор << для собственных классов

Потоки используют insert (вывод<<для стандартных типов.) - операторТакже можно перегружать << оператор для собственных классов.

Пример

write пример функции для указания на использование a Date структура.Дата в идеале кандидатом для класса с++, в котором элементы данных (месяц, день и год) скрыты от представления.Поток вывода логического назначения для отображения такой структуры.Этот код отображает дату использование cout объект:

Date dt( 1, 2, 92 );
cout << dt;

Доступ cout принять a Date объект после оператора insert перегружает оператор вставки для распознавания ostream объект слева и a Date справа.Перегруженный оператор << функцию оператора затем необходимо объявить как различаются класса Date поэтому она может получить доступ к конфиденциальным данным в пределах a 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;
}
  

Заметки

Перегруженный оператор возвращает ссылку версию с оригиналом ostream объект, то есть можно сочетать insert:

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

См. также

Ссылки

Потоки вывода