|
Программирование >> Расширенная версия языка c++
новую библиотеку, как это определено стандартом 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;
Как вы, наверное, уже догадались, потоки 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++, автоматически открываются четыре потока:
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |