Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Вставкой (insertion) в языке С++ называют операцию вывода, а оператор << - оператором вставки, т.к. позволяет вставить выводимую информацию в поток. Оператор вставки можно перегрузить. При перегрузке << для вывода создается функция вставки (inserter function).
Формат функции вставки:
ostream & operatior<<(ostream & stream, имя_ класса ob)
{ тело функции вставки
return stream;
}
Первый параметр – ссылка на объект класса ostream. Это означает, что stream должен быть потоком вывода. Второй параметр - объект, на который будет распространяться функция вставки. Возвращает функция вставки ссылку на stream, который имеет тип ostream.
Функция вставки не является функцией-членом класса, для работы с которым она была создана. Поэтому для доступа к закрытым членам класса функцию вставки нужно сделать дружественной этому классу.
Функции ввода в С++ называются функциями извлечения, т.к. при вводе информации из потока извлекаются данные.
Формат функции извлечения:
istream & operator>>(istream & stream, имя_ класса & ob)
{ тело функции извлечения
return stream;
}
istream & stream - ссылка на поток ввода
имя_ класса & ob - ссылка на объект, получающий информацию
Функция возвращает ссылку на поток ввода. Функция не является членом класса.
#include “iostream”
#include “string.h”
class inventory { char item[40];
int onhand;
double cost;
public: inventory(char *i, int o, double c) { strcpy(item, i);
onhand = o;
cost=c;
}
friend ostream & operator << (ostream & stream, inventory ob);
friend istream & operator>>(istream & stream, inventory & ob);
};
ostream & operator << (ostream & stream, inventory ob)
{ stream<< ob.item<<”: “<<ob.onhand<<”шт.”;
stream<<” на руках по цене “<<ob.cost<<”\n”;
return stream;
}
istream & operatior>>(istream & stream, inventory & ob)
{ cout<<”введите название предмета”;
stream>>ob.item;
cout<<”введите число предметов, выданных на руки”;
stream>>ob.onhand;
cout<<”введите стоимость выданного экземпляра”;
stream>>ob.cost;
return stream;
}
main()
{ inventory («карандаш», 4, 12.55);
cout<<ob;
cin>>ob;
cout<<ob;
return 0;
}
Дата публикования: 2015-02-22; Прочитано: 304 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!