|
Программирование >> Дополнительные возможности наследования
6. Исправьте листинг, приведенный в упражнении 5, и откомпилируйте его. 7. Жучки: найдите ошибки в этом коде: #include <iostream.h> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 class Animal; void setValue(Animal& , int); void setValue(Animal& , int, int); class Animal { friend void setValue(Animal& ,int); private: int itsWeight; int itsAge; } ; void setValue(Animal& theAnimal, int theWeight) { theAnimal.itsWeight = theWeight; void setValue(Animal& theAnimal, int theWeight, int theAge) { theAnimal.itsWeight = theWeight; theAnimal.itsAge = theAge; int mainO { Animal peppy; setValue(peppy,5); setValue(peppy,7,9); 8. Исправьте листинг, приведенный в упражнении 7, и откомпилируйте его. День1[-й Потоки Ранее для вывода на экран и считывания с клавиатуры мы использовали объекты cout и cin, не понимая до конца принципов их работы. Сегодня вы узнаете: Что такое потоки ввода-вывода и как они используются Как с помощью потоков управлять вводом и выводом данных Как с помощью потоков записывать информацию в файл и затем считывать ее Знакомство с потоками Язык программирования С++ специально не определяет, каким образом данные выводятся на экран или в файл либо как они считываются программой. Тем не менее эти особенности являются важной частью работы программиста, поэтому стандартная библиотека С++ включает библиотеку iostream, упрощающую ввод-вывод (I/O). Благодаря вьщелению операций ввода-вывода в отдельную библиотеку упрощается создание аппаратно независимого языка разработки программ для разных платформ. Это позволяет создать программу на С++ для компьютеров PC, а затем откомпилировать ее для рабочей станции Sun. Разработчики снабдили компилятор библиотеками для всех случаев. Так, по крайней мере, должно быть теоретически. ПРИМЕЧАНИЕ Библиотека - это набор файлов OBJ, которые можно подключать к программе для получения дополнительных функциональных возможностей. Это наиболее распространенная форма многократного использования кода, и можно сказать, что она существует еще с тех пор, как первобытные программисты каменного века выбивали первые нули и единицы на стенах своих пещер. Инкапсуляция Классы iostream рассматривают информацию, выводимую программой на экран, как побитовый поток данных. Если данные выводятся в файл или на экран, то источник потока, как правило, содержится в программе. Если же поток направлен в проти- воположную сторону, данные могут поступать с клавиатуры или файла на диске. В этом случае они заносятся в переменные. Одна из основных целей использования потоков состоит в инкапсуляции процедуры обмена данными с диском или дисплеем компьютера. Сама программа работает только с потоками, которые реализуют эти процессы. Схематически эта идея проиллюстрирована на рис. 16.1. Клавиатура Поток Монитор Диск Диск Рис. 16.1. Инкапсуляция с помощью потоков Буферизация Запись на диск (и в меньшей степени вывод на экран) обходится очень дорого. Запись данных на диск и считывание их с диска требует довольно много времени, что может надолго заблокировать выполнение программы. Для решения этой проблемы потоки обеспечивают буферизацию. Данные сначала записываются в буфер потока, а после его наполнения вся информация разом записывается на диск. Суть идеи проиллюстрирована на примере знакомого со школьной скамьи бака с в.одой (рис. 16.2). Вода заливается сверху, и бак постепенно наполняется, поскольку нижний вентиль закрыт. Когда вода (данные) достигает верха, нижний вентиль автоматически открывается и вся вода выливается (рис. 16.3). Как только бак опустеет, нижний вентиль закрывается, а верхний открывается вновь, и вода снова поступает в бак (рис. 16.4). В некоторых случаях необходимо, чтобы вода сразу же выливалась из бака, не дожидаясь его наполнения. В программировании такая ситуация называется очисткой буфера (рис. 16.5).
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |