Главная » Просмотр файлов » Г. Шилтд - Самоучитель C++ (DJVU)

Г. Шилтд - Самоучитель C++ (DJVU) (1114955), страница 56

Файл №1114955 Г. Шилтд - Самоучитель C++ (DJVU) (Г. Шилтд - Самоучитель C++ (DJVU)) 56 страницаГ. Шилтд - Самоучитель C++ (DJVU) (1114955) страница 562019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 56)

Пользоваться этой возможностью следует с величайшей осторожностью. 3. Оператор атанас еав$, по существу, предназначен для замены прежнего оператора приведения типов. Он просто выполняет операцию приведения типов над объектами неполиморфных классов. Например, в следующей программе тип ()оа1 приводится к типу 1пт. // Пример использования оператора атаСьс сааб Ььпс1ис)е <ъоветеата~ пвьпд паптеарасе вЫ; пп таъп () ( (ттт 1; йоат К; 199.22; 1 = втат)с сает<)пг> (Х) ) Глава 12. Динамическая идентификация и приведение типов сопт « 1; тетитп 0; 1.

Объясните, зачем нужны операторы сома еаа$, гешМгрге1 сваг и вгаГ(е еав1. 2. В следующей программе имеется ошибка. Исправьте ее с помощью оператора соввГ саа$. ((ьпс1п<(е <ьое<сеета> пв(пе патеврасе в1д; чоЫ Г (сопит ооио)е аз.) ( 100; // Ошибка! Исправьте ее с помошью оператора сопвс савс (п1 ткахп () ( доиЫе х = 98.6; сои1 « х « епс11р Г (х); соит « х « епд1; тстптп 0„ 3. Объясните, почему оператор сопа1 еав( следует использовать только в самых крайних случаях.

Теперь вам необходимо выполнить следующие упражнения и ответить на вопросы. 1. Опишите операции, которые можно выполнить с помощью оператора $уреЫ. 2. Какой заголовок нужно включить в вашу программу для использования оператора 1уреЫ? Самоучитель С++ 3. Помимо стандартного приведения типов, в С++ определено для этой цели еще четыре оператора. Что это за операторы и зачем они нужны? 4. Допишите следующую программу, чтобы на экран выводилась информация о выбранном пользователем типе объекта. ((тпс1пс(е <1оястеат> Йгпс1ибе <(.урегп1о> пятпд папеярасе япс(; с1аяя А ( г1тбпа1 чотс( Х() с1аяя В: рпб11с А ( с1аяя О: рпЫъс В 1пп п~аъп() ( А *р, а оЬ; в Ь оЬ| С с оЬ; тпп сопс « "Введите О для обьектов типа А, "; соил « "1 для объектов типа В итл"; сопя « "2 для объектов тига С.~п"; съп>> 1 11 (1-=1> р = 6Ь оЬ; е1яе 11 (1=-=2) р = ас оЬ; е1яе р = га оЬ! выведите на экран сообщение о тиге // выбранного пользователем объекта ге(.пгп О; 5.

Объясните, каким образом оператор ~уреИ можно иногда заменить оператором Йувапис сав1. 6. Тип какого объекта можно определить с помошью оператора 1уреЫ? Глава 12.Динамическая идентификация и приведение типов В этом разделе проверяется, хорошо ли вы усвоили материал этой и предыдущих глав. 1. Переделайте программу из раздела 12.1, пример 4, чтобы возможную ошибку выделения памяти внутри функции аепега1ого отслеживать с помощью механизма обработки исключительных ситуаций. 2.

Измените функцию яевега1ог() из вопроса 1, чтобы в ней использовать версию оператора пев с ключевым словом пойгов. 3. Особо сложное задание: попытайтесь создать иерархию классов с абстрактным классом Ва$аЯгие$ на ее вершине. В основании иерархии создайте два производных класса. В одном должен быть реализован стек, в другом — очередь. Создайте также функцию РаФайтцс1Рас1огуО со следующим прототипом: РагаЯтосг +Раеаветис~Хасессу (сЬас метха1 Функция Ра1аБ(тпс1Рае1огуО должна создавать стек, если параметр метка равен з, и очередь, если параметр метка равен г1.

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

1. Что собой представляют новые операторы приведения типов и для чего они используются? 2. Что собой представляет класс $уре 1пГо? 3. С помощью какого оператора определяют тип объекта? 4. Дан следующий фрагмент программы. Покажите, как определить, объектом какого типа является указатель р: объектом типа Ваве или объектом типа Вепчед. с1ава Вале ч(гтиа1 чоЫ й() () )) става Оегтчес): рыЬ1тс Ване тпс показ.п () ( Базе "р, Ь оЬ; пегтчес) с1 оЬ; 5. Оператор ф)вава сав1 успешно завершается только в том случае, если объект, над которым выполняется операция приведения типов, является Самоучитель С, + либо объектом целевого типа, либо объектом целевого типа. (Вставьте нужное слово.) 6. Можно ли с помощью оператора фпапнс саМ снять атрибут сопя(? от 1 3.1.

Пространства имен пап~еврасе кмис Г // обълвленюг 1 О пространствах имен коротко было рассказано в главе 1, сейчас мы рассмотрим это понятие более подробно. Пространства имен появились в С++ относительно недавно. Они предназначены для локализации имен идентификаторов во избежание конфликтов имен (пате со111з1опз). В среде программирования С++ сосуществует невероятное количество имен переменных, функций и классов. До введения понятия пространств имен все эти имена находились в одном глобальном пространстве имен и возникало множество конфликтов. Например, если вы в своей программе определяли функцию 1оиррег(), то она могла бы (в зависимости от списка своих параметров) подменить стандартную библиотечную функцию 1опррвг(), поскольку имена обеих функций хранились бы в одном глобальном пространстве имен. Конфликты имен имеют место, когда в одной и той же программе используются библиотеки функций и классов разных производителей.

В этом случае вполне возможно — и даже очень вероятно, — что имена, определенные в одной библиотеке, будут конфликтовать с теми же именами, но определенными в другой библиотеке. Все проблемы решило введение понятия пространств имен и ключевого слова пап~еьрасе. Это ключевое слово позволяет локализовать область видимости имен, объявленных в данном пространстве имен. Пространство имен дает возможность использовать одно и то же имя в разных контекстах и при этом почвы для конфликтов не возникает. Вероятно, больше всего выиграла от введения пространств имен стандартная библиотека С++ (С++ згапдап) 11Ьгагу). В ранних версиях языка вся библиотека С++ определялась в глобальном пространстве имен. Теперь библиотека С++ определяется в собственном пространстве имен я1Й, что значительно снижает вероятность конфликтов имен. Вы также можете создавать в программе свои собственные пространства имен, чтобы локализовать область видимости тех имен, которые, по вашему мнению, могли бы вызывать конфликты.

Это особенно важно при создании собственных библиотек классов или функций. Ключевое слово патеярасе путем объявления именованных областей дает возможность разделить глобальное пространство имен. По существу, пространство имен определяет область видимости. Ниже приведена основная форма использования ключевого слова павезрасе: Глава 13, Пространства имен идругие темы 355 Все, что определено внутри инструкции вап)еврасе, находится внутри облас- ти видимости данного пространства имен.

Ниже приведен пример объявления пространства имен Муаран)еЯрасе: яятпеярясе Иувавеярасе ( тй чо).а п~угосс (1п~ 1' ) ( совс << 1; ) с1аяя пус1яяя ( рс)о11с: ъ.оЫ яес). (1сС х) ( Г =- х; ггс дегъ() ( =есств г; Здесь имена переменных 1 и )(, функции гву1впсО, а также класса п)уе1авв находятся в области видимости, определенной пространством имен МуХа)веБрасе.

К идентификаторам, объявленным в пространстве имен, внутри этого пространства можно обращаться напрямую. Например, в пространстве имен Муаран)еЯрасе в инструкции гв$вгп 1 переменная 1 указана явно. Однако поскольку ключевое слово вап)еврасе определяет некоторую область видимости„то при обрашении извне пространства имен к объектам, объявленным внутри этого пространства, следует указывать оператор расширения области видимости. Например, чтобы присвоить значение 10 переменной ) в той части программы, которая не входит в пространство имен Му)Х)ап)еЯрасе, необходимо использовать следующую инструкцию: Мунапеврасе:: 5.

= 10; А чтобы объявить объект типа шус1авв в той части программы, которая не входит в пространство имен Му)Мав)еЯрасе, нужна такая инструкция: (чунатеврасе::тус1авв оЬ; Таким образом, для доступа к члену пространства имен извне этого пространства перед именем члена следует указать имя пространства имен с оператором расширения области видимости. Можно себе вообразить, что если в вашей программе обращения к членам пространства имен происходят достаточно часто, необходимость каждый раз указывать имя пространства имен и оператор расширения области видимости может быстро надоесть.

Для решения этой проблемы была разработана инструкция вв1вя. У этой инструкции имеются две основные формы: ееыщ папеврасе имву свз.пд имя; . члеи; 386 Самоучитель С++ В первой форме параметр имя задает имя пространства имен, доступ к которому вы хотите получить. При использовании этой формы инструкции ця1пя все члены, определенные в указанном пространстве имен, становятся доступными в текущем пространстве имен и с ними можно работать напрямую, без необходимости каждый раз указывать имя пространства и оператор расширения области видимости. При использовании второй формы инструкции вявя видимым делается только указанный в инструкции член пространства имен. Например, пусть у нас имеется описанное выше пространство имен Му1МатеБрасе, тогда правильны все представленные ниже инструкции ияпЫ и операторы присваивания: пегими Мунаткеврасе::к; УУ видимой, делается только переменная — 10; // инструкпия правильна, поскольку переменная к видима пв1пд пажеврасе Мунаюеьрасе; // видимыми делаются все члены пространства имен Мунатеэрасе 10; // инструкпия правильна, поскольку видимы все нленн пространства имен МунапеЯрасе Имеется возможность объявить более одного пространства имен с одним и тем же именем.

Это позволяет разделить пространство имен на несколько файлов или даже разделить пространство имен внутри одного файла. Рассмотрим следующий пример: пашеьрасе пЯ ( 1пъ а~ патпеарасе ХЯ ( тпг 3' Здесь пространство имен ХЯ разделено на две части. Несмотря на это, содержимое каждой части по-прежнему остается в одном и том же пространстве имен — пространстве МЯ.

Характеристики

Тип файла
DJVU-файл
Размер
8,22 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее