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

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

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

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

Ответы на вопросы и решения упражнений уотс( а тормасов:: я~ор () ( епс) — (ооцо1е) с1ос)< О / СьОСКЗ РЕК ЯЕС; ) уоЫ асориасс)т::Явой О соус « истекшее время: " « епа — Ьедтп; .сов~ << "Ы"; 'пс спаъпО яъорма сомашсп; ).Опс маесЬ.аеагв(); Еог(1=0; 1<3200000/ 1+~.); // время цикла иаЕс)т.асор О; иаеоп. алом О; Создание объекта с использованием его начального значения ясориагсЬ я2(с1оск()); яог ( 1=0 ' 1<250000 / 1++);,'/ время цикла я2.явор(); я2.ябои(); гебвгп 0; 5.2 1. Для объектов оЦ и 1етр вызывается обычный конструктор. Однако, когда объект 1ев)р становится возвращаемым значением функции (9, создается временный объект, который генерирует вызов конструктора копий.

() ъпс1в<)е <1оветеапо цяапс паптеврасе явс); с1аяв гпус1аав рцп11с: пзус1аяа(); тус1аяв (сопя п1ус1аяя ао) п1ус1аяя Е (); // Обычный конструктор 534 Самоучитель С++ гнус)азз::пус1аяз () ( соп( « "Работа обычного конструктораХп" // Конструктор копий гпус1азгк ".вус1азя (сопя1 гпус1аяз йо) ( соек « "Работа конструктора копий~в"; Возвращение объекта 1тус1аяя п1ус1аяя::1() ( пус)аяя гещр; егнтп кетпр; тпг па1п ( ) ( щус1аяя оЬз оЬ3=оЬЗ . т (); гегнтт. О ) 2. В соответствии с программой, когда объект передается в функцию яе!та!(), создается его поразрядная копия. Когда функция яе(уа)О возврашает свое значение и копия удаляется, выделенная для этого объекта память (на которую указывает указатель р) освобождается.

Однако эта память по-прежнему требуется исходному объекту, который использовался при вызове функции де!уа!9. Далее представлена исправленная версия программы. Для решения проблемы потребовался конструктор копий. // Исправленная версия программы ()1пс1не)е <ьояйтеатв> 41пс1псе <сяЫ)1Ь> пя)пв патпеярасе я(о; с1азз гнус)азз ( (п1 +р; рпЬ11с: таус1аяз(ьпс 1); щус1аяя(сопев птус1аяя Во); // конструктор копий -п~ус1азя() (с(е1еке р;) Ет1епа (п1 дееуа1(тус1аяя о); Приложение В. Ответы на вопросы и решения упражнений 535 гаус1авв::нус1авв(1пь О 1 р=пен 1пб; 1т(!р) ( сопс « "Скибка выделения памяти~п"; ехз.Ь (1) у ) *р=1; l/ Конструктор копий таус1авв: ."аус1аав (сонат тус1аза Ао) р=пеи 1пгп УУ выделение памяти для копии 15('Р) ( соцс « "Опплбка выделения памяти~п"; ех1с(1); 1гп атее та1 (п|ус1авв о) гесцгп *о.р; уу получение значения 1пс дзЫО пус1авв а (1), Ь (2) ) сопс «де~ча1 (а) « " " << де~уа1 (Ь); сопл « М' ~ сопс «деСуа1 (а) « " " « цесуа1 (Ь); гетигп 0; 3.

Конструктор копий вызывается, когда один объект используется для инициализации другого. Обычный конструктор вызывается, когда объект созда- ется. 5.4 1. ()1пс1пйе <1ОВСкеат> Фупс1пс(е <свсо11Ь> 536 Самоучитель С++ нятпд папеярасе ясб; 1опд жувТгло1(сопвс сЬаг *я, сЬаг **епй, гпл Ьаяе = 10) гебнгп вттго1(в, епс(, Ьаве); гпГ. пагп () 1опд х; спал я1 — "100234"; сЬаг *р; х = тувсгТо1(в1, йр, 16); сонс « "Основание системы счисления 1б: " « х « '~г.'р х — тувегео1(в1, ар, 10); сонс « "Основание системы счисления 10: "' « х « ' 1г.'; х = гаувсгЬо1(в1, йр); // основание системы счисления, заданное по умолчанию соне « "Основание системы счисления по умолчанию 10: « х « '~п'~ геснгп 0; 2.

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

/* Эта программа работает только в среде программирования Всг1апе) С++ Э/ ((1пс1нбе <говсюеалт> ()тпс1нбе <сопго.Ь> нягпд паюеярасе ясс(; уоЫ тус1гео1((пт 1еп = -1) 1пг ваап ( ) 1пт 1' Припожевые В. Ответы на вопросы и решения упражнений оокоху(1, 1); Гок(1=0; 1<24; сонс « "аЬсбейяЬтзЕ1ппор<(кз1пчихук12345878ЭОМ"; доеоху(1, 2); л~ус1кео1 () р докоху(1, 4); тус1кео1 (20]; келнкп 0; ) Стирание строки на величину, задан:пю параметром 1еп лото тпус1кео1 (1пв 1еп) тпс х, у; х = иЬекех()г у = иЬекеу()," получение положения по х получение положения по у 1Е(1еп == -1) 1еп = 80 — х; тпк 1 =х кок(; 1<=1еп; 1++) сенс « докоху(х, у); // установка курсора 5.6 () 1пс1 и<(е <1овккеав~> нвтпс паспеврасе вЫ; 1пк б1л(1пс а, 1пл Ь) келнкп а — Ь; 11оак С)ай(Г1ОаК а, 81оас Ь) кекпкп а — Ь; тпк патп() ( тпс (+р1) (1пК, 1пК); 4.

Аргумент по умолчанию не может быть другим параметром или локальной переменной. 535 Самоучитель с~ ° 11оаг (*р2) (т1оаС„С1оаС); р1 = б15; // адрес функции б1г(1пс, 1гс) р2 †' ЙСС; // адрес функции б1С'(~1оаС, 11оаг) сопс « р1 (10, 5) « соц. « р2(10.5, 8.9) « '1п'; ге цгп 0; Проверка усвоения материала главы 5 1. // Перегрузка конструктора баСе() для параметра типа Сфве ()1пс1цбе <СояСсеав> ()Спс1пбе <сяСб1о> // заголовок включен длн функции яясапС(' ()Спс1пбе <сС1ве> цяфпд павеярасе ясб; с1аяя баге ( 1гс бау, и'опС)1, уеаг; рц)з11с: баСе (сЬаг*яСх); басе (Спг в, 1пг б, 1пС у) бау = б; вопСЬ = т; уеаг = у Перегрузка конструктора длн параметра типа С1ве С баСе(С1ве С С); Сб яЬо (1 сонг « вопСЬ. « '/' « бау « '/' соцс « уеаг « ''и'; баСе:: баСе (сЬаг *ясг) яясапС (яСг, "$Л*сЫ%*сЫ", йфвопСЬ, йбау, йуеаг); баСе;: баСе (С1ве С С ) Г я гцсг СВ *р; р =- 1оса1ССве (аС); бау = р -> Св вбау; твоам = р -> Св воп; Приложение В.

Ответы нв вопросы и решения упражнений усат = р -> дтл уеатт 1п1 тати() ( Образование даты с помощью строки бабе вба);е("11/1/92") ) Образование даты с помощью трех целых баке З.баье(11, 1, 92); /* Образование дать с помощью параметра типа съа~е ь, нто ведет к созданию объекта, использующего систеьлтую дату "ьт баке ЕбаКе (акте(ИШ Ь) ) вбасе.знои(); 1баке.знои(); ебаке.впои(); тесвтп О; 2.

В классе ыпр определен только один конструктор — конструктор с параметром. Поэтому нельзя объявлять объект типа вашр без параметра. (То есть инструкция катр х — это неправильное объявление.) 3. Первый довод в пользу перегрузки конструктора состоит в том, что такая перегрузка обеспечивает гибкость, позволяя вам выбрать в каждом конкретном случае наиболее подходящий конструктор.

Другой довод в том, что перегрузка позволяет объявлять как инициализируемые, так и не инициализируемые объекты. Вам может потребоваться перегрузить конструктор для динамического выделения памяти под массив. 4. Ниже представлена основная форма конструктора копий: имя класса (сопз( ими класса аобтвжт) ( тело конструктора ) 5. Конструктор копий вызывается, когда имеет место инициализация, а именно: когда один объект явно используется для инициализации другого, когда объект передается в функцию в качестве параметра, когда создается временный объект при возвращении объекта функцией.

6. Ключевое слово обжег(оай является устаревшим. В ранних версиях С++ оно информировало компилятор о том, что функция будет перегружена. В современных компиляторах это ключевое слово не поддерживается. 540 Самоучитель С++ 7.

Аргумент по умолчанию — это значение, которое присваивается параметру функции при ее вызове, если при этом соответствую1дий аргумент функции не указан. 8. ()1пс1нс(е <1озггеап~> ((ьпо1пое <сзГг1пд> цв(пя патекрасе зЫ) чоЫ гечегзе (сваг 'згг, 1п1 сопит = о) 1п( та1п () сваг *в1 = "Это проверка"; с)1аг *в2 = "Мне нравится С++"; гечегзе (з1); 1! Реверс всей строки гечегзе (з2, 7); 1! Реверс первых семи знаков соог « з1 « '~п'1 сопГ сс В2 « 'Хп'; геГпгп 0; чоЫ гечегзе (сваг *вгг, 1пГ соппг) ( 1пг с)1а г Г впар; 1г!!соппс) соопг = втг)еп(з|г) — 1; гог(1=0„2=соппг1 1<д.; ' ~ ~, 1--) ( гетр = згг( ( зяг( 1 1 = згг( З 1; з1г[ ) 1 - (етр; 9. Все параметры, получаюшие аргументы по умолчанию, должны находиться правее параметров„не получающих таких аргументов.

10. Неоднозначность может возникнуть, когда по умолчанию происходит преобразование типа, а также при использовании параметра-ссылки или аргумента по умолчанию. 11. Пример неоднозначен, поскольку компилятор не может определить, какую версию функции соипрМеО следует вызвать. Вызвать ли первую версию с аргументом по умолчанию Йч(вог, или вторую — в которой функция получает только один параметр? Приложение В. Ответы нв вопросы и решения упражнений 541 12. При получении адреса перегруженной функции с помощью указателя, конкретную ее версию определяет способ объявления указателя. То есть для всех перегруженных версий функции, адреса которых мы хотели бы получить, должна объявляться своя версия указателя. Проверка усвоения материала в целом 1, Мьпс1пбе <ъовЕтеап~> натпо патпеарасе вЕб; тоЫ стает~гас аа, тпе т1Ь) тп 1Й (а<Ь~ теснота; е1ае ( // а и Ь меняются местами =- а; а=Ь; Ь = ьпь та1п П тпрр х = 10, у = 5; сонс « "х: "«х« " у: "«у« отбею ~х, у) сои' « "х: "«х« ">у: "«у« ' ~п' теснота От 2.

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

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

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

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