|
Программирование >> Расширенная версия языка c++
648 Самоучитель С++ 13.5 1. Да. . , 2. Да, поскольку в C++ определено автоматическое преобразование из типа int в тип double. 3. Одна из проблем неявного преобразования конструкторов состоит в возможности просто забыть, что такое преобразование имело место. Например, неявное преобразование в инструкции присваивания очень напоминает перегруженный оператор присваивания, хотя их действия не обязательно аналогичны. Когда вы создаете классы, предназначенные для широкого использования, чтобы не вводить в заблуждение потенциальных пользователей ваших классов, было бы правильным отказаться от неявного преобразования конструкторов. 13.7 . - 1. /* В этой версии ограммы на экран выводится число стволов, записанных в буфер */ -л tinclude <iostreain> tinclude <strstream> using namespace int mainO . . , .. char buf [255] ; :,. ostrstream ostr (buf, sizeof buf) ; - ost ввод/вывод через массивы работает с потокамиХп ; ost точно так же, как обычн1й ввод/бьшод\п 103; ostr 123.23 \п; можно также использовать маниляторы ostr hex 100 ; или флаги формата ostr.setf(ios:iscientific); ost< de< 123.23; ;,. , , ostr ends; гарантия что буфер завершится нулем вывод на экран содержимого буфера buf; cout return 0; Приложение В. Ответы вопросы решения упражнений 2. /* Массивы в качестве объектов ввода/вывода при копировании содержого одного массива в другой ttinclude <iostreain> ttinclude <strstreaiTi> namespace .ri: cha uffl = Это проверка ввода/вывода C++, основанного на использовании символьных массивов ; char oucbui [255] ; main istrstream istr(inbuf); . г. ostrstream ostr (outbuf, sizeof outbuf}; char ch; istr.get(ch); ostr. put {\0 ); нулевой ошвол завершения cou< Ввод: inbuf \n; cout Вывод: outbuf \n; return 0; 3. Преобразование строки в число с плавающей точкой .и. ttinclude <iostream> i ttinclude <strstream> у и- - г *г using namespace std; float f; cha S [ ] = 1234.564 ; вещественное в виде строки istrstream Простой способ преобразования строки в ее представление istr f; cou << Преобразованная формам << f << \п; return Самоучитель С++ Проверка усвоения материала главы 13 1. В отличие от обычных переменных-членов, для которых характерно то, что в каждом объекте класса имеется их копия, у статической переменной-члена существует только одна копия, которую все объекты класса используют совместно. 2. Для использования массивов в качестве объектов ввода/вывода в программу необходимо включить заголовок 3. Нет. 4. extern С int counter О; 5. Функция преобразования просто превращает объект в значение, совместимое с другим типом данных. Как правило, этим другим типом данных является встроенный тип данных С++. 6. Ключевое слово explicit применяется только к конструкторам. Оно предотвращает неявное преобразование конструкторов. 7. Постоянная функция-член не может модифицировать объект, который ее вызывает. 8. Пространства ен, объявляемое с помощью ключевого слова namespace, предназначено для локализации области видимости имен. 9. Ключевое слов stable дает возможность постоянной функции - члену класса изменять данные, являющиеся членами этого класса. Проверка усвоения материала в целом ~ 1. Да. В ситуациях, в которых неявное преобразование выполняет то же действие, которое в отношении типа параметра конструктора было бы выполнено перегруженным оператором присваивания, перегружать оператор присваивания не нужно. 2. Да. 3. Новые библиотеки можно размещать в собственных пространствах имен, предотвращая тем самым конфликты имен с кодами других программ. Эта полезная возможность оказывается столь же полезной и в отношении старых кодов, которые предполагается использовать с новыми библиотеками. ГЛАВА 14 Повторение пройденного Пространства имен были добавлены в C++ для локализации имен идентификаторов с целью предотвращения конфликтов имен. Проблема конфлик-
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |