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

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

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

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

// Здесь показан родовой стек для хранения пар значений ()1пс1Ые <1оя~кеал> пяйпд пал1еярасе япс[; ГЫеЕЕпе 812Е 10 Создание родового класса для стека Еелр1а е <с1аяя ЯсасКТуре> с1аяя ягаск бЗ? Приложение В. Ответы ыа вопросы и решении упражнений Я~аскТуре з~сК(Я1ЕЕ] (2]; // содержит стек Тпрр соя; индекс вершины стека рпЬ11с: чойс) 1п1~() ( соя = 0:] чо1с) ризЬ (Ят.асМТуре оЬ, Якас)<Туре оЬ2) ( яьас)<туре рор (Якас)<Туре аоЬ2); )' Размещение объектов в стеке Сешр1але <с1аяя Ялас)<Туре> соус) власам<Ялас1Туре>:: рцвЬ (Я1ас)~ТуреоЬ, ЯСас)<Туре оЬ2) Тй (~оз==Я1ЯЕ) соцб « "Стек полон1п"~ геснтп; вЬс)<(яоз] (О] = оЬр з1с1(Соз] (1] = оЬ2; ~оз++; Выталкивание объектов из стека Сешр1аяе <с1аяя Ясас)<Туре> ясас)<туре зсас)«якас)сТуре>:: рор (ясасктуре аоЬ2) ( 1й (сов==0) ( соня « "Стек пуст~п"; гекцтп 0; // возврат нуля при пустом стеке соя--р оЬ2 = зТсМ(Ьоз] (1]; тесцтп ябс)<(Соя2 (О]; Тпс ша1п () ( Демонстрация символьных стеков я ас)«сЬат> з), я2; // создание двух стеков 1пс 1; сЬат сП| Инициализация стеков з1.

1п1т. ( ); з2.1пйс(); з1 . рпзЬ ( ' а ', ' Ь ' ) з2.рцзЬ('х', 'к') з1.рпзЬ('Ь', 'б'); Сзмаучигелв 'з') т 'а'); 'х'); з2.роза( з1.роз(т( з2.роз)т( 1<З) 1++) й « !Из стека 1:" « з1.рор(с)т)г сс ' ' сс с)т « "~в"; гог(1=ОЙ соцс сонг. 1<З; 1++) « ")Ь стека 2:" « з2.рор[сЛ): « ' ' «с)т« "М"; ~от(1=0; соек сои'с Демонстрация стеков со значениями тина ЙоцЫе звас1<доцЬ1е> с(з1, <(з2) // создание двух стеков бопЫе с(; П Инициагизация стеков с(з1. 1г!1Е( ); с)з2.1п1с(); с(з1.риз)т(1.1, 2.0); бз2.риз)т(2.2, З,О)! г(з1.роз)г(З.З! 4.0)( бз2.роз)з(4,4, 5.0)у г(з1.риз)г(5.5, 6.0) ) !1з2.рвзп(6.6, 7.0); !.ог(1=Ох 1<3; 1++) соцп « "(Ь стека 1:" « с(з1.

рор (б); сопС <с ' ' « с( с< "~в"; аког(1=0; 1<З, 1++) ( сопс с< "(Ь стека 2:" « с(з2.рор(с)); соцп <с ' ' с< б « "1п"~ гегигп 04 тгу ( // блок ггу е)ггои иози~ смйуагзюч 3 сассн (СЛэе ЗзУ) // ) 5. Ниже представлены обычные формы инструкций 1гу, еа1сй и Фготг: Приложение В. Ответы на вопросы и решения упражнений ВЗЗ б. /* В этой программе показан родовой класс я(асК, в который встроена обработка исключительных ситуаций Ф! сгьпс1пс(е <1оясгеатп> цятгд пагвезрасе зсс(; ()с(еИпе 31ЕЕ 10 Создание родового класса ясас)< гепр1а е <с1аяя ЯсасКтуре> с1аяя ясас)< ЯвасКТуре я1сК [31ЕЕ) ~ // содержит стек 1пс Соя; индекс нержины стека риЛ11с: ~о1<( альт.() ( соя =- О!) !/ инициализация стека уо1<( ризЛ (ЯгасКТуре сЛ); // помещает объект в стек Ягас)<туре рор() 1 // выталкивает объект из стека !! Размещение объекта в стеке сещр1асе <с1аяя ЯсасКтуре> ыоьб зсасК<ЯсасКТуре>::ризЛ(31асКТуре оЫ с ту ( Тй (ЕОЗ=313Е) Сигом Ятями; ) саЕсЛ (1пс) ( соцс « "стек полон~в"; гегцгц; я(сК[тоя) = оЬ; соя++; выталкивание объекта из стека бещр1асе <с1аяя 31асКТуре> Ясас)<Туре ЗСасК<ЯтасКТуре>.":рор() сгу ( 1й (тоя= — 0) Сигом О; сассЛ (1пс) ( сопс « "Стек пуст~в"; гегыгп О; // возврат тб ля при пустом стеке ) соя--; геспгп вссК(соя) Самоучитель Сн- )и( гватц () демонстрация символьных стеков всас)с<сЬаг> з1, з2т О создание двух стеков 1пс 1; Инициализация стеков з1.1птк(); з2.1птс () ) з1.

рцзЬ ( ' а ' ); з2.ризЬ('х'); з1.рцзЬ('Ь'); з2.рцзЬ('у'); з1.ризЬ('с'); з2.рцзЬ('г'); гол(1=0; 4<34 1++) соцс « ")4в стека 1: <с в1.рор() с< Хог(1=0; 1<4) 1~-+) соцс << "Из стека 2:" << з2.рор() <с "п"; Демонстрация стеков со значениями типа ооцЫе запас)с<с(оиЬ1е> с(з1, пз24 /l создание двух стеков Инициализация стеков с(з1.1п1к(); с)з2.1пте() ) с)з1.рцзЬ(1.1); с(з2.рцзЬ(2.2); с(з1.рцзЬ(3.3); с)з2.рцзЬ(4.4); с)з1.рцзЬ(5.5); с(з2,рцзЬ(6.6); Йод(1=0; 1<З; 1-и-) соц" « "из стека 1:'* « с)в1.рор() « "~п", ЙОГ(1=0~ 1<4; тьа) соцс « "РЬ стека 2:" С< с)в2.рор() « "~п"; гепцоп 0; 8.

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

Она реализуется с помощью ключевого слова 1егпр1а1е. Ниже представлена основная форма родовой функции: Ееер1аЕе <С1аяа лауре> везер виачввмв жег 4ееищии(сп аараивтроа) // 1 2. В С++ родовой класс определяет все операции класса, но действительные данные задаются в качестве параметра при создании объекта этого класса. Ниже представлена основная форма родового класса: Септр1Ме <с1авв ТЕурв> с1авв иив жласса // 1 3. 1(апс1пс)е <1овегеагв> ияпя пагпсврасс яс1; // Возврагцаст значение а в степени Ь тегпр!ате <с1авз Х> Х аехр(Х а, Х Ь) ( геаи1т = 1; аког(1=01 1<Ь; 1++) гови1Г "= а; гетигп гевн1еу )пГ гаван ( ) ( сопс « овир(2, 3) сс епб1; соп1 « оехр[1О .О, 2. О); гстигп О; 4. ц1пс1иое <1оа~геатп> п1пс!псе <1асгеап~> ияпа пагпсзрасе зЫ; 636 Самоучитель Сч.ч.

Гегор1а?е <с1авв Соотг)Туре> с1ааа соогс) ( Соотг)Туре х, у; рцЬ11с: соого(Соогс(туре ), Соогс1Туре 3) ( х = 1; у = 1; уо)с) а)гои() ( соцГ «х « ", " «у « еос?14 'п~г паз.п () ( сов ос)<)пс> о1 (1, 2), <2(3, 4); о1.анои() ' о2.а?1ои() г соогс)<с?оцЬ1е> оз (О. О, 0.23), о4 (10. 19, 3. 098); оз.автои()г о4.алои()г гесегп 0; 5. Совместная работа инструкций 1гу, са1сЬ и 11)гоч происходит следующим образом.

Поместите все инструкции, для которых вы хотите обеспечить контроль исключительных ситуаций, внутри блока ггу. При возникновении исключительной ситуации она возбуждается с помощью инструкции 11)гож и затем обрабатывается с помощью соответствующей инструкции са?сЬ. б. Нет. 7. Вызов функции гегаиаа$е(~ происходит в том случае, если исключительная ситуация возбуждается той инструкцией 11?гож, для которой нет соответствующей инструкции са1сЬ. Вызов функции ипехресге(10 происходит в том случае, если исключительная ситуация не указана в списке типов инструкции Йгои.

8. са4с)((...) Упражнения 12.1 1. Динамическая идентификация типа необходима потому, что в С++ при компиляции программы не всегда есть возмозможность выяснить, на объект какого типа указывает указатель базового класса или ссылается ссылка базового класса. 2. Если класс ВавеС1авв перестает быть полиморфным классом, на экране мы увидим следующее: Приложение В. Ответы на вопросы и решения упражнений Тип переменной 1 — это 1пк Указатель р указывает на объект типа ВаяеС1аяя Указатель р указывает на объект типа ВаяеС1аяя Указатель р указывает на объект типа ВаяеС1аяя 4. 1й(ЬуреЫ ('р) == суре1с((П2)) 5.

Истинным. Несмотря на то, что здесь используется один и тот же класс- шаблон, тип данных в каждой из версий различен. 12.2 1. Оператор дувише саят позволяет проверить правильность выполнения операции приведения полиморфных типов. 2. ()1пс1ийе <1оялтеаш> ((1пс1ис(е <(уре1п(о> ня1пя паптеярасе я(с(; с(аяв В 1 У)гбпа1 УоЫ й() () 1 с с1аяя В1: рпЬ11с В уоЫ ЙО () с1аяя В2: рнЬ11с В [ .оЫ Й(О () бпб ша)п( ) ( В +Р7 Р2 ОЬ; р = дупаштс саак<В2 *> (аоЬ) Ы(р) сопб « "Приведение типов прошло успешно"; е1яе сове « "Приведение типов не произошло"; теентп 0; 3.

(ш та1п О 1 г1;; Язарс ~р; Самоучитель С++ аког(1=0; 1<)0~ (ч+) р = деляга~от()г УУ получение следующего объекта сопя « суреъо("'р) .пагпе( ) « епс)1; объект изображается на экране только н тон случае, если это не объект типа Ии113Ьаре 11(!бупап~вс сазп<Ып115Ьаре "> (р)) р->ехалр1е(); еппгп 0; 4. Нет. Указатели Вр и Рр указывают на объекты совершенно разных типов, 1, Новые операторы приведения типов обеспечивают более безопасные и понятные способы выполнения операции приведения типов. 2.

()1пс1ис(е <1озсгеат> пятну папеярасе зЫ; чотб Г (сопзс ЙопЫе Я1) ( бопЫе яу сопел саад<с)опЬ1е я> (1); ч = 100.0; 1пс та1п() ( с)опЫе х — 9В. б; соШ «х < епс)1: Г(х) х сопс « х « еги21; геспгп 0; 3. Поскольку оператор сопят сазФ лишает объекты атрибута сопя(, его использование может привести к неожиданной и нежелательной модификации объектов.

Приложение В. Ответы на вопросы и решения упражнений Проверка усвоения материала главы 12 1. Оператор 1уре!д возвращает ссылку на объект класса 1уре 1а(о, содержащего информацию о типе, 2. Для использования оператора (уреЫ в программу необходимо включить заголовок <1уре1п$о>.

3. Ниже представлены новые операторы приведения типов. Оператор Назначение 4. Ф1пс1вс(е <1оавтеата> (11пс1цде < уреупйо> пв1по пагаеарасе всб; с1авв А ( я1тваа1 ~го1б 1() (1 1' с1ааа в: рвЫ1с л ( с1авв С: риЫ1с В ( 1' 1.гс тауп ( 1 ( сов(. « "Введите О для объектов типа А, совс « "1 для объектов тига В или"; сорб « "2 для объектов типа С.М"Г сзп»з г 1й (1==1] р = й1Ь оЬ; е1ве Н (1-=21 р =- ас оЬ; е1ве р = йа оЬ; бупагп(с саа1 ге~ п1егрге( сват в1абс саз1 сопв1 сав1 л *р, а оЬг в Ь оЬ; ~ с оЬ; 1пс Выполняет операцию приведения полиморфных типов Преобразует указатель на один тип в указатель на другой тип Выполняет операцию "обычного" приведения типов Лишает объекты атрибута сопвт Самоучитель С++ 640 1Е (луре1<((*р) == Ьуре1б(А) ) сонс « "Объект А" 11 (пурЕЫ(+р) =-.— ~урЕЫ(В) ) соне « "Обьект В"; 1л (ЬуреЫ(+р) —.- Ьуре1<((С) ) сопл « "Объект С"; те итп О; 5.

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

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

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

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