Программирование >>  Расширенная версия языка c++ 

1 ... 75 76 77 [ 78 ] 79 80 81 ... 227


новую библиотеку, как это определено стандартом Standard С++. Тем не менее, большая часть информации вполне применима и к старой библиотеке ввода/вывода.

Эта глава охватывает несколько аспектов системы ввода/вывода C++, включая форматируемый ввод/вывод, манипуляторы ввода/вывода и создание пользовательских функций ввода/вывода. Как вы увидите в дальнейшем, в системе ввода/вывода C++ имеется множество черт, характерных для системы ввода/вывода С.

Повторение пройденного

Перед тем как продолжить, необходимо правильно ответить на следующие вопросы и сделать упражнения.

Создайте иерархию классов для хранения информации о летательных аппаратах. Начните с общего базового класса airship, предназначенного для хранения количества перевозимых пассажиров и количества перевозимого груза (в фунтах). Затем создайте два производных от airship класса

airplane и balloon. Класс airplane должен хранить тип самолетного двигателя (винтовой или реактивный) и дальность полета в милях. Класс

balloon должен хранить информацию о типе газа, используемого подъема дирижабля (водород или гелий), и его максимальный потолок (в футах). Создайте короткую программу для демонстрации работы этой иерархии классов. (Ваше решение несомненно будет несколько отличаться от ответа, приведенного в конце книги. Однако, если функционально

оно будет соответствовать ответу, считайте его правильным.)

2. Для чего используется ключевое слово protected?

3. Дана следующая иерархия классов. В каком порядке вызываются конструкторы? В каком порядке вызываются деструкторы?

iinclude <iostream>

using namespace std;

class A { : , - . ,

public:

AO { cou << Работа уктора класса Mn ; }

~A0 ( cou << Работа деструктора класса n ; }

Class В: public A { .. ..r.-- -Lv -

public: > . > . : .

B() ! cou Работа конструктора класса п ; } ~В.{) { cou Работа деструктора класса п ; }



public: \ Pv-

требуется конструктор void showi j (} { cout i j \n; } ,..

class derived: public base { int k;

public: 4 .,

требуется конструктор

void show ( ) { cout к ; showi j ( ) ; }

derived ob(l, 2, 3) ; - 1 . , * .

ob. show() ;

return 0; .> u \ .....

6. Об1чно, если вы задаете иерархию классов, вы начинаете с более

класса и продолжаете более классоM.

(Впишите пропущенные слова.)

class С: public В { public :

{ cout конструктора класса }

~С() ( cou Работа деструктора класса п ; } }; . - . ,

-V -iv. . .-. 4 -

С ob; . I-

return 0;

) . ...-.1 . , . , .

4. Дан следующий фрагмент кода. В каком порядке вызываются конструкторы

и деструкторы?

clas ass: public A, public В, public С { ... ,;. >

5. Добавьте отсутствующие конструкторы в данную программу: finclude <iostreain>

using namespace std; 7 1 ; 1

class base { int i, j;



Поток

Значение

Устройство по умолчанию

Стандартный ввод

Клавиатура

cout

Стандартный вывод

Экран

cerr

Стандартная ошибка

Экран

clog

Буферизуемая версия сегг

Экран

Как вы, наверное, уже догадались, потоки cin, cout и сегг соответствуют потокам stdin, stdout и stderr языка С. Потоками cin и cout вы уже пользовались. Поток clog - это просто буферизуемая версия потока сегг. В языке Standard С++ также открываются дополнительные потоки wcin, wcout, wcerr и wclog,

предназначенные для широких (16-разрядн1х) символов, которые в данной книге не рассматриваются. Эти потоки обеспечивают передачу расширенных наборов символов (large character sets), что обеспечивает возможность работы с некоторыми экзотическими языками, такими как, например, китайский.

По умолчанию, стандартные потоки используются для связи с клавиатурой и экраном. Однако в среде, в которой поддерживается переопределение ввода/вывода, эти потоки могут быть перенаправлены на другие устройства.

Как отмечалось в главе 1, в C++ ввод/вывод обеспечивается подключением к программе заголовочного файла <iostream>. В этом файле определены сложные наборы иерархий классов, поддерживающие операции ввода/вывода. Классы ввода/вывода начинаются с системы классов-шаблонов (template classes).

8.1. Некоторые базовые положения системы ввода/вывода C++

Перед тем как начать обсуждение системы ввода/вывода несколько

общих комментариев. Система ввода/вывода С++, так же, как система ввода/вывода С, действует через потоки (streams). Поскольку вы программировали на С, вы уже должн шагь, что такое поток ввода/вывода, однако несколько дополнительных замечаний обобщат ваши знания. Поток ввода/вывода - - это логическое устройство, которое вьщает и принимает пользовательскую информацию. Поток связан с физическим устройством с

помощью системы ввода/вывода C++. Поскольку все потоки ввода/вывода

действуют одинаково, то, несмотря на m что программисту приходится работать с совершенно разными по характеристикам устройствами, система ввода/вывода предоставляет для этого единый удобный интерфейс. Например, функция, которая используется для записи информации на экран монитора, вполне подойдет как для записи в файл, так и для вывода на принтер.

Как вы знаете, если программа на С начинает выполняться, открываются три потока: stdin, stdoiit и stderr. Нечто похожее имеет место при запуске программ на C++. Когда запускается программа на C++, автоматически открываются четыре потока:



1 ... 75 76 77 [ 78 ] 79 80 81 ... 227

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика