Главная » Просмотр файлов » Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004

Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (1160791), страница 75

Файл №1160791 Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (Б. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004) 75 страницаБ. Страуструп - Язык программирования С++. Специальное издание, 3-изд. Бином. 2004 (1160791) страница 752019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Для того чтобы различать чтение н запись, $1ппуаорвга1ог[( [) возвращает Сге), когда вызывается с пеконстантным объектом. Сгеу ведет себя наподобие сйагй, за исключением того, что он вызывает $1ппус$герсде1 ошп сору () при записи в него: с!авв 81ппунйге2( О ссылка на в[!) Уг!елг! с!авв 5 1г(пд; $1глпуй в, !'п1 1, Скет($Фппуй вв, ьп1 Д): в (вв), ! (1!) () риЫ!а арега!вг с)! аг [) сапв1 ( ге1игп в геаь((л); ) 0 вьн)апгь з~аквнпе ра!ь! арега!аг= [сБаг с) ( влвп1в (1, ь), ) ,')'пзлюентпь значение 345 11.12. Класс 811!п0 1)ля завершения класса 5!т!лая добавил несколько полезных функций; с(аии 51т!пу ( 5!т!пуй орега1огч= — (сопя! 5!пну&11 $!ппуй орета1ог ' = (сопя1 сьаг'), 1тсепд оя!театй арета!ог«(оя1театй, сопи1 5!ггпу&), Гт!епс( ЬИгеаглй орега1ог» (!иггеатй, 51ппд&); кепд Ьоо! арета!от== (солк1 51ппуй х, соли! сдпг' я) ( ге1игл я1гстр (х.гер->и, и) == О, ) ~пепд Ьоо! орета1от== (сопя151т!луй х, соли! $1плдй у) ( те!игп я!гетр (х гер — >и, у гер — >и) == О, ) ~пепд Ьоо! орега1ог1= (соли151ппуй х, сопи1 идат' я) ( те!игл к!гетр (х.тер — >я, я) ы О, ) Гпепд Ьоо! арета!од= (сопя! 51ппдй х, сопя! 51ппуй у) ( ге1игл Игстр (ххер — я, у.тер — я)!= О; ) 5!т!пу арета 1огь (сопя!5!г!пуй, солИ 5!с!луй); $1плуорега1от>(соля151т!лу&, сопИ сЬа! ); С целью зкономии места, я оставляю операции ввода/вывода и конкатенации в качестве упражнений.

Главная программа просто пользуется операторами 51г1лд. 5П !пу~(51т!ну а, 5!т!луб) ( а[2) = 'х', сдагс=6[5] сои1 «'вид!при.г:.'«а «''«Ь «' '«с«",и', ге1игп Ь, !п1 таил () 51плдх у сои1 « "Пожалуйста, введите две опроки'~п', с!л»х»у; сои! « 'введено: " «х « ' ' «у « '1л'; $1у!пя е = х; у =Д(х, у); (1(х ы е) сои1 « "х испорченаап"; х[О) = т); (Г (х == х) сои! "ошибка записи!',и; сои1«'выход, ' «х«' '«у«' ' «г «'~л', В нашем классе 51пщ отсутствует много возможностей, которые вы, быть может, считаете важными нли даже жизненно неооходимымн. Например, в нем нет операции извлечешяя представления в виде С-строки Я 11.14[10), глава 20).

346 Глава 11, Перегрузка операторов 11.13. Советы [1] Определяйте операторы в основном для имитации привычной формы записи; 9 11.1, [2] Для больших по размерам операндов используйте аргументы с типом константных ссылок; 9 11.6. [3] Прп больших по размерам результатах рассмотрите возможность оптимизации возвращаемого значения; з 11.6. [4] Отдавайте предпочтение операциям копирования по умолчанию, если они подходят для вашего класса; 9 11.3.4. [5] Замещайте пли запрещайте копирование, если умолчание не подходит для данного типа; 9 11.2.2.

[6] Отдавайте предпочтение функциям-членам над функциями-не-членами для операций, которым требуется непосредственный доступ к представлению; 3 11.5 2. ]7] Отлавайте предпочтение функциям-не-членам по отношению к функциям-членам для операций, которым нс требуется доступ к представленшо; 9 11 5 2. [8] Пользуйгссь пространствами имен для указания связи функций-помощников с ппх» классом; з 11.2,4.

[9] Пользуйтесь функциями-не-членами для симметричных операторов; З 11.3.2. [10] Пользуйтесь оператором (] для индексов в многомерных массивах; 6 11.9. [11] Объявляйте конструкторы с единственным чаргумептом, задающим размера, как ехр1?с?б 9 11.7.1. [12] В общих случаях отдавайте предпочтение стандартномуклассу Иг1пд [глава 20), а не результатам ваших собственных упражнений; 9 11.12. [13] Будьте осторожны прн введении неявных преобразовании; З 11 4. [14] Пользуйтесь функциями-членами для выражения операторов, которые требуют (уа(не в качестве левого операнда; 6 11.3.5. 11.14.

Упражнения 1. ['2) Какие преобразования выполняются в каждом выражении в следующей программе? 8сгисГ Х( 1пг 6 Х (?пф Х орегон"> (! пб, 1; зсгисг У( 1пс б У(Х]; У орегагогь (х]; орегагог он ((; ); ексегп Х орегасог* (Х, У]; ексегп щи" (Х(; Хх=б 347 11.14. Упражнения уу=х; ьпьь= 2, !и! ьла!и () гь!О, х.ьу ьй /(у( у.ь!д; У-!ЬЬ'У, к*хай Ю !дб у, с!азз 5!г!пу Пег( //ссылка на спьраку и гмелекя сяраки риЫ!с 5!гту !!сгьь3!г!луйк(, с!ь ага, пех1 (); // операции па еиьиеип! выбору //ияератар длп з // ссьыка ни следующий элемент 10.

11. 12. 2 3 4 6 7 Измените программу таким образом, чтобы она прп запуске выводила значения всех допустимых выражений. ('2) Завершите и оттестируйте класс 51г!пана ~ 11.12. ("2) Определите класс ТМТ, который ведет себя точно так же как ьп1. Подсказка: оп ред ел и те!!х' Тиаре га 1ог гп1 ((. ('1) Определите класс КТ!йТ, которыя ведет себя как !п1, за нсключеппеьь тоь.о, что допустимы только операторы ь (уцарпый и бинарный), — (унарный и би- нарный), ', / и ",4. Подсказка: нс определяйте ьс1НТсорега1ог !п1 ((.

(*3) Оь ьределите класс ПЯТ которьш ведет себя как ьк1МТ но для представлен ня чисел использует по крайней мере 64 бптз. ("4) Определите класс, реализующий арифметику с произвольной точностью. Оттестируйте его, вычислив факториал 1000. Подсказка: вам потребуется уп- равление памятью наподобие того, как это сделано в классе 51г!пд, (*2) Определите внешний итератор для класса Яг!пу! Сравьььлте это по удобству, стилю программирования и эффективности с внуь- ренним итератором для Яппи(который бы вводил понятие текущего элемента для Яг!пуп операции, относящиеся к этому элементу), ('1.5) Реализуйте оператор взятия подстроки для класса строк, используя пере- грузку (). Какьле еще операции вы хотели бы выполнять со строкамп? ('3) Разработайте класс 51г!пдтакььм образом, чтобы оператор подстроки мож- но было использовать в левой части оператора црнь:вливания.

Сначала наннщн- те версикх в которой строка может быть присвоена подстроке того же размера. Затем нашпвите версию, в которой размеры могут отличаться. (*2) Определите оператор для Яг!пд, которьп| возвращает представление строки в виде С-строки. Обсудите все за п против реалпзациц такой операции в виде оператора преобразования. Обсудите различные варианты выделения памяти под представление в виде С-строки. ("2.5) Определите и реализуйте простое средство для поиска подстрок в строках Яг!пу. (*1.5) Модььфььцььруйте предыдущий пример из 6 11.14(11) таким образом, чтобы он работал со строками з1г!пд нз стандартной библиотеки. Бы не можете изме- нить определение з!г!пд; 348 Глава 11.

Перегрузка операторов 13 14 15 16 17 18 19 20 21. 22. ('2) Напишите программу, которая будет совершенно нечитабельна из-за использования перегрузки операторов и макросов. Идея: определите +, имеющий смысл оператора — (и наоборот) для Р~Т, затем напишите макрос, который заставлял бы !п1значпть й«Т. Заместите часто употребляемые функции с использованиел~ ссылок в качестве аргументов. Несколько неверных комментариев также создадут изрялнгло путаницу. (*3) Обменяйтесь результатами упражнения 3 11.14113) с кем-нибудь нз своих друзей.

Не запуская, попы гайтесь определить, что делает программа вашего приятеляя. Теперь вы знаете, чего не следует делать. (*2) Определите тип гес4 как вектор из четыреху7оа1. Определите орега1ог() для Уес4. Определите операторы+, —, "„', =, +5ч -=, *= ну= для комбинаций вектор, и и чисел с плаваюшей то ~кой. ('3) Определите класс Ма(4 как вектор из четырех Уес4. Опредеэпгге орега1ог(), возврашаюгций Иес4 из Ма!4, Определите обычныс матричные операции для этого типа. Определите функцию, реализуюшую метод исключения Гаусса. (*2) Определите класс 1 ес1ог по аналогии с Ъес4, но с размером, являюшимся аргументом конструктора Уес1огХес1ог (1и1).

(*3) Определите класс Ма1г(х по аналошш с Ма(г!х4, но с размерами, задаваемыми в качестве аргументов конструктора Ма!г(хсМа1г(х ((п1, !п1). (*2) Завершите класс Р(г 1о Тиз й' 11.11 и протестируйте его. Чтобы быть полным, Р1г 1о Т должен, по крайней мере, иметь операторы *, — >, =. ++ и —. Сделайте так, чтобы ошибка па этапе выполнения не возникала до того, как реально производится разыменовапие «впсячей> ссылки.

(*1) Используя две структуры: зггис! 8 ( гп! х, у, ), зггис! Т ( сдаг«р; сдпг«д, ); напишите класс С, который допускает использование х и р из некоторых 5 и Т, примерно так же, как если бы х и р были членами С ('1.5) Определите класс!пг(ех д.ля хранения степени показательной функции туров (г(оиб(е, Тпс(ех). Найдите способ, при котором 2**7вызывает турош(2, 1), (*2) Определите к.ласс Ттау(лагу для представления мнимых чисел.

Оп ределите на его основе класс Сотр1ех. Реализуйте основные арифметические операции. Производные классы Ие лгножьте обьектгя без необхос) илшсти. — В. Окнам Концепции и классы — производные классы — функции-члены конструирование н уничтожение —. иерархии классов — поля типа— виртуальные функции — абстрактньге клагсы — традиционные иерархии классов — абстрактныс классы как интерфейсы -- локализация создания объекта — абстрактные классы п иерархии классов — советы — упражнения.

12.1. Введение С++ позаимствовал из Вппп)а концепции класса, как определяемого пользователем типа, н иерархий классов. Кроме того, в системное проектирование была привнесена пдся, что клас< ы должны использоваться для моделирования концепций реального и программного мира. С++ предоставляет конструкции языка, непосредственно поддерживающие эту концепцию проектирования. С другой стороны, тесная связь с концепциями проектирования делает С»» очень эффективным. Использование конструкций языка просто в качестве подпорок для традиционного программированияя означает потерю основных достоинств С++. Нн одна концепция не существует в изоляции.

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

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

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

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