Язык С++ и программирование на нем. Рейзлин В.И. - 184 стр.

UptoLike

Составители: 

186
class Date {
tm tm_date;
friend istream& operator>>(istreamfi &is, Date txt);
friend ostream& operator<<(ostream& os, const Date& txt);
public:
Date(int d, int m, int y);
Date(tm t);
Date();
tm tm_date;
friend istream& operator>>(istreamfi &is, Date txt);
friend ostream& operator<<(ostream& os, const Date& txt);
};
Реализуем операции извлечения и вставки для объектов класса
Date.
Возвращаемым значением для операции извлечения вставки)
должна являться ссылка на поток, чтобы несколько операций могли
быть выполнены в одном выражении. Первым параметром должен быть
поток, из которого будут извлекаться данные, вторым параметром
ссылка или указатель на объект определенного пользователем типа.
Чтобы разрешить доступ к закрытым данным класса, операция извлече-
ния должна быть объявлена как дружественная функция класса. Ниже
приведена операция извлечения из потока для класса Date:
istream.& operator>>(istream& is, Date& txt){
is >> txt.tm_date.tm_mday;
is >> txt.tm_date.tm_mon;
is >> txt.tm_date.tm_year;
return is;
}
Те же самые замечания верны и для операции вставки. Она может
быть построена аналогично. Единственное отличие заключается в том,
что в нее нужно передать константную ссылку на объект типа Date, по-
скольку операция вставки не должна модифицировать выводимые объ-
екты. Ниже приведена ее реализация для класса Date:
osiream& operator<<(ostream& os, const Date& txt){
os << txt.tm_date.tm_mday <<‘/’;
os << txt.tm_date.tin_mon << ‘/’;
os << txt.tm_date.tm_year;
return os;
}