Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Функции вставки и извлечения



Вставкой (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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...