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

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

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

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

Синтаксис вызова функции, параметр которой передается по ссылке, идентичен синтаксису вызова функции, параметр которой передается по значению. 3. Аргумент по умолчанию, фактически, является компактной записью перегрузки функции, поскольку приводит к тому же результату. Например, инструкция >пс й~ъпе а, 1пг Ь = О) ю идентична следующим двум перегруженным функциям: 1пе Х ~1пе а); 1пе Г (~.пса, 1пе Ы Самоучитель С-н- 542 4. ()1ис1пс(е <1овегеат> ив) пя патекраее кМ; с)акк катр )пг а; риЫ)с: яагер() ( а = О; ) яагер(1ис п) ( а = пг )пг ОеЕ а() ( гегпгп а; ) )и( гааги ( ) ( катр оЬ (ОО) г катр оЬаггау(10) 5. Конструкторы копий необходимы, если программист хотел бы точно управлять процессом создания копий объекта.

Это важно только в том случае, если создаваемые по умолчанию поразрядные копии по каким-либо причинам нежелательны. ГЛАВА 6 Повторение пройденного 1. с1аяя гаус1авв ( 1ис х, у; рпЫз.с: жус1аяя (1пгг, гиг З) ( х = 1; У = З; ) аус1авя!) ( х = О; у = О; 2. с1аяв гаус1аяв ( 1пг х, у; рп)з11с: тус1авв (1ис 1 = О, гпс 1 = 0) ) т 3.

В объявлении функции после появления аргумента по умолчанию не должно быть обычных аргументов. Приложение В. Ответы нв вопросы и решения упражнений 543 4. Функции нельзя перегружать, если их отличие только в том, что одна получает параметр по значению, а вторая — по ссылке. (Компилятор не в состоянии их отличить.) 5. Аргументы по умолчанию лучше использовать тогда, когда можно с уверенностью предположить, что при работе приложения одно или более значений будут встречаться чаще других. Аргументы по умолчанию лучше не использовать, когда такой уверенности нет.

6. Нет, поскольку нельзя инициализировать динамический массив. В этом классе имеется только один конструктор, которому требуется инициализация. 7. Конструктор копий — это особый конструктор, который вызывается при инициализации одного объекта другим. Такая инициализация имеет место в следующих трех случаях: когда один объект явно используется для инициализации другого, когда объект передается в функцию в качестве параметра, и когда в качестве возврашаемого значения функции создается временный объект.

Упражнения 6.2 Перегрузка операторов * и у относительно класса соогс( (('..с'пг)е <1озггеак~> изуит пыкезрасе згс(; с1азз соогй тпГ х, у; 72 значения координат рпЬ11с: соогй!) ( х = О; у= О; соогс)(.'гА Ь, тпе 5) ( х = Г; у чоЫ дег ху(тпг а , 1пг а3) ( ) = х; 1 = у; ) соотг) орегаСог*(соогб оЬ2); соото орегаеогт'(соогс( оЬ2); /т Перегрузка оператора * относительно класса соогс( соотг соогс);:орегагог' (соогг(оЬ2) соогй етр; 'гор.х = х * оЬ2.х; Ьеп~р. у = у * оЬ2.у; ге игп Гел1р; Само)/чи тель / / Перегрузка оператора / относительно класса ссохла ссохла соогх)::орегагог/ (соогс)оЬ2) ( ссохла геп~г Ьешр.х = х / оЪ2.х; Ьетр.

у =- у / оЬ2. у; гегпгп лепр; 1пг тпагп () 1 ) о1 (1О, 1О), о2Д, З), З; 1пг х, у~ оЗ = о1 * о2г оЗ.дег ху(х, у) р сонг « "(о1 * о2) Х: " « х « ", у: « у « "'~п" у оЗ = о1 / о2; оЗ. пег ху (х, у) р сопп « "(о1 / о2) Х: " « х « ", У: « у « геспгп О; 2. 'Гак перегружать оператор % нежелательно, поскольку перегруженная версия оператора не связана с его традиционным использованием. 6.3 1. // Перегрузка операторов < и > относительно класса соогс) $1пс1пое <1оз1геат> азгпу папеврасе зЬг); с1азв соого ( 1пх х, у; // значения координат риЬ11с; соогх(() ( х = О; у= О; ) соохх((1пй 1, гпх З) ( х = 1; у = з; ) ~оЫяесху(1пС й1, пЙ зЗ) ( )=х; 3 =у; ) 1пг орегаЬог<(соогх( оЬ2)р 1пп орегаЬог>(соогх( оЬ2); // Перегрузка оператора < для класса соохб 1пь соотг)::орегасох<(соотг) оЬ2) 545 Приложение В.

Ответы нв вопросы и решения упражнений гегагп х<ОЬ2 х йа у<оЬ2 Перегрузка оператора > для класса соогс) 1пГ соог<(::орегаГог>(соотг оЬ2) ( ге"агп х>оЬ2.х йа у>оЬ2.у; упс вафп() ( соогб о1(1О, 1О), о2(5, 3) уй(о1>о2) соШ « "о1 > о2)п"; е1яе сопя « "о1 <= о2~п"; 1~(о1<о2) сопя << "о1 < о2~п"; е1яе соыс « "о1 >= о2 ~п"; гегпгп О; 6.4 1. // Перегрузка оператора -- относительно класса сооМ ()фпс1пбе <1оя~геав> пяфпс( патпеярасе яГс(; с1аяя соогс) упг х, у; // значения координат рпЬ11с: соогб () ( х = О; у= Ор соо с((1ПГ 1, пс О) ( х = 1~ у О~ ) чоЫ дег ху(фпг ау, фпг гО) ( 1 = х; 1 = у; ) соого орегаГог-- (); // префиксная форма соогс1 орегаког-- (1пЬ поГпяеб) ) // постфиксная форма Перегрузка префиксной формы оператора — для класса соогб соого соогс(::орега1ог--() ( х--' е гегягп *СЬ1ят // Перегрузка постфиксной формы оператора -- для класса соогс( соого соска:: орегаТог — (1пгпогпяеа) Самоучитель С++ х— у р гебигп *ТЬ1я; 1пбха1п () ( соотг о1(10, 10) р 1пб х, у~ объекта о1--; !! декремент о1.

оей ху (х, у); сон~ << " (о1 — ) Х: « х « , У: « у « ~п объекта — о1; /( декремент о1.се~ ху(х, у); сопб « "( — о1) Х: гебпгп О; 2. // Перегрузка оператора + относительно класса соогс) ()1пс1ис(е <1ояСтеазп> ияупо патеярасе яяб; с1аяя соогс( ( 1пб х, уу 1/ значения координат рпЬ11с: соогс(() ( х = О; у= О; ) соог<((1п~ 1, 1пб О) ( х = 1 у = 3 ° ) лоуб де~ ху(1пб й, 1пя аО) ( 1 = х; Э' соогс( орегабог+(соог<( оЬ2); // бинарный плюс соогс) орега~ог+(); !/ унарный плюс Перегрузка бинарного оператора т для класса соогс) соогй соотг)::среда~от+(соотг( оЬ2) соотг беюр; петр.х = х + оЬ2.х; петар.у =- у + оЬ2.у; /~ Перегрузка унарного оператора + для класса соогс( соогд соотг(::оретаСог+() Приложение В.

Ответы на вопросы и решения упражнений 1й (х<0) х = -х; 1г (у<0) гегигп *гЬ1я," 1г/е пафп () ( соотг) о1(10, 10), о2 (-2, -2) 1пп х, у; о1 = о1 + о2; // сложение о1*0ес ху(х, у) сопя « " (о1ж о2) Х: " « х « ", у: " « у « "'~п"; о2 = +о2; // абсолютное значение о2 .деГ ху(х, у); согп « "(+о2) Х; " « х « ", Ъ': '" « у « "М"; гегигп 0; 1. /* Перегрузка операторов — и / относительно класса соогс) с использованием дружественных функций ~К ()1пс1ис(е <1оаЬгеюп> паупер па~леярасе япсЬ с1аяя соотг 1пп х, у; // значения координат рпЬ11с: соотг(() ( х = О; у= О; сооЫ(1пп 1, 1пп з) ( х = 1 у гоЫ рея ху(1пЬ я1, 1п 60) ( 1 = х; З = У' ) Ы.епс) соотг орегапог-(соогб оЬ1, соотг( оЬ2); ггфепс( соотг) орегаГог/(соогб оЬ1, соотг( оЬ2); Перегрузка оператора — для класса соогп с использованием дружественной функции соогб орегагог-(соог<) оЬ1, соогб оЬ2) соотг) лепр; Ге~пр.х = ОЬ1.х — оЬ2.х; Самоучке кь Кедр.

у оЬ1. у — оЬ2. у; геОигп бекр; Перегрузка оператора ! для класса соотг) с использованием дружественной функции соого орекагок/ (соокс(оЬ1, соогб оЬ2) соогб гетр,х = оЬ1.х,' оЬ2.х; сешр. у = оЬ1.у ! оЬ2,у; ге1шп 1егпр; 1пг иауп ( ) ( соогс( о1 (10, 10), о2 (5, 3), оЗ; 1~А х, оЗ = о1 — о2; оЗ.цеК ху(х,у) ) соцб « "(о1 — о2) Х: «х« *', у: "«у<с "М"; оЗ = о1 ! о2; оЗ.деК ху(х, у); сопС « "(о1 1 о2) Х: «х « ", У: ' ° «у « "~п"; гесцгп 0; 2. ~! Перегрузка оператора * для операций оЬ*1пс и 1п~*оЬ ()1пс1нбе <1оягкеащ> ця1пд папеярасе згс(; с1азя соотг) ( 1пс х, у; !1 значения координат рпЬ11с: соок6() ( х = 0; у= 0; )(ж1, 1пО З) ( х = гол дее хУ(1пк а1, 1пб аЗ) ( 1 = х; З = У; Ы.епс) соогб орекагок* (ссор оЬ1, 1пс 1) > йгуепд соогб орекагок* (1пк 1, соотг( оЬ2) О Перегрузка огератора * первым способом соска орекагок* (сооко оЬ1, 1пб Приложение В.

Ответы на вопросы и решении упражнений соогб Гелр; гетпр.х = овг.х * 1; ген.у = оЬ1.у * геьпгп Ьежр; Перегрузка оператора * вторым способом соогб орегаеог' (ъпг 1, соога оЬ2) соотг( Ьешр; Гешр.х = оЬ2.х * оеар. у = оЬ2 .у * 1; гегнгп Ьешр; 1пг таъп() ( соогс( о1 (10, 10), о2) гпг х у; о2 = о1 * 2; 11 оЬ * гпс о2.де~ ху(х, у); сонь « "(о1* 2) х. ""<сх« ", у: « у сс "1п"; о2 =. 3 * о1; /1 1пб * оЬ о2.ЧеЕ ху (х, у) сонг « "(3 * о1) Х: "<сх« ", у; «у « "1п"; гебпгп Ор 3. Благодаря использованию дружественных оператор-функций„стало возможным получить, в качестве левого операнда, встроенный тип данных. При использовании функций-членов, левый операнд должен быть объектом класса, для которого определяется оператор. 4.

/* Перегрузка оператора — относительно класса соогс( с использованием дружественных функпий */ ()1пс1пг(е <1ояЕгеага> нягпо папеярасе яга; с1аяя соогс( ( 1пб х, у; // значения координат р ~11с: соотг(() ( х = О; у = О; 1 Самоучитель соотг)(1пг (, 1пт )) ( х тоЫ дев ху(1пг а1, 1пс префиксная форма тгфепс) соотг орегаЬог-- у =.)' яз) ( 1 =х: ~ =у) ) (соого( йоЬ) // постфиксная форма йгфепс( соогб орега".ог — (соогб аоЬ, фпг поГцяеб) Перегрузка префиксной формы оператора — для класса соогб с использованием дружественной функции соогб орегагог — (соогп' йоЬ) Перегрузка постфиксной формы оператора — для класса соогс( с использованием дружественной функции соого арегатог-- (соогб тоЬ, 1пб пояцяес)) объекта о1 « х « у " « у « "~п" гегигп О; б б оЬ.х --; оЬ.

у --; гесцгп оЬ; оЬ.х оЬ.у --; гститп оЬ; фпад та1п() соогс) о1 (10, 1О)," 1пг х, у; — о1; / / декремент о1. дег ху (х, у); сопя « "(--о1) Х: о1-- ) /! декремент о1. деГ ху (х, у); сонг « "(о1--) Х: 1. ))1пс1ибе <1ояГгеавт> ()1пс1пс)е <сяМ11Ь> цяфпд пап~еярасе ягс(; « х « ", у: " <с у с< "~п"р объекта о1 Приложение В. Ответы на вопросы и решения упражнений с1аьа с)упаггау ( шпС +р; пс етзе; риЬ1тс: ау у(тпг.

в); тпб арал(тпГ. т)) дог(тпг. т)с с(упаггау аорегаГог=(дупаггау аоЬ) // Конструктор бупаггау::г(упаггау(тпс в) ( р = пеи тпг. (а); тб(гр) сопл << "Ошибка выделения памяти~п"; ехт' (1) ) вгхе = в( l/ Запоминание элемента тпс аг)упаггау::рыб(тп дй (т<0 1 1 т>=зг хе) сопс « "Ошшибка нарушения границ массива !~п"; ахти (1); теспгп р ( т ) Получение элемента тпс с(упаггау:: деГ, (тпб т) ( тЕ(т<0 ) ) т>=втке) оопп « "Ошибка нарушения границ массива !~п"; ехтс(1)," геспгп р(т) Перегрузка оператора = для класса бупаггау булат ауйгс(ушаггау::орегаСог=(с(упаггауаоЬ) Сгмоучитель 552 Н (ауге!=оЬ. з1ге) ( сопл « "Нельзя копировать массивы разных размерсв ! ~п"; ех1т(1); азот(1=0; 1<ауге; 1++) р[1) = оЬ.р[1); теСцтп +тЬ1з; спв шауп () 1пс с1упаттау оЬ1 (10), оЬ2(10), оЬ3(100); оЬ1.рпв (3) — 10с 1 = оЬ1.деС(3); соцс « 1 « "1п"; ОЬ2 = оЪ1; 1 = оЬ2.оес(3) ) соцс « 1 « "~п"; Выполнение следующей инструкции ведет к ошибке оЬ1 = оь3; теецтп 0; 6.7 1.

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

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

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

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