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

DJVU-файл Г. Шилтд - Самоучитель C++ (DJVU), страница 6 Практика расчётов на ПЭВМ (2538): Книга - 3 семестрГ. Шилтд - Самоучитель C++ (DJVU): Практика расчётов на ПЭВМ - DJVU, страница 6 (2538) - СтудИзба2019-05-08СтудИзба

Описание файла

DJVU-файл из архива "Г. Шилтд - Самоучитель C++ (DJVU)", который расположен в категории "". Всё это находится в предмете "практика расчётов на пэвм" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр DJVU-файла онлайн

Распознанный текст из DJVU-файла, 6 - страница

Например, это совершенно правильный фрагмент: /* Это многострочный комментарий, внутрь которого // вложен однострочный комментарий. Это окончание многострочного комментария. ф/ Тот факт, что однострочный комментарий может быть вложен в многострочный, дает возможность при отладке "помечать" некоторые строки программы. Мщз$неащ 1. В качестве эксперимента проверьте, имеет ли комментарий, в котором коммен- тарий стиля С вложен внутрь однострочного комментария С++, право на жизнь: // Это странный /*способ делать комментарии-/ 2.

Добавьте комментарии к ответам на упражнения в разделе 1.3. Самоучитель Сч-ь 1.5. Классы. Первое знакомство Вероятно, одним из наиболее важных понятий С++ является класс. Класс— это механизм для создания объектов. В этом смысле класс лежит в основе многих свойств С++.

Хотя более детально понятие класса раскрывается в следующих главах, оно столь фундаментально для программирования на С++, что краткий обзор здесь необходим. Класс объявляется с помощью ключевого слова с1авв. Синтаксис объявления класса похож на синтаксис объявления структуры. Здесь показана основная форма: о!аяя ммм класса ~ амкриеие фумкцмм л переменмие класса ряЫз.с: оммриеие Фующмм и меремеммие класса аамаом обеемеом; В объявлении класса список обвектов не обязателен.

Как и в случае со структурой, вы можете объявлять объекты класса позже, по мере необходимости. Хотя имя клпесптакже не обязательно, с точки зрения практики оно необходимо. Доводом в пользу этого является то, что имя класса становится именем нового типа данных, которое используется для объявления объектов класса. Функции и переменные, объявленные внутри объявления класса, становятся, как говорят, членами (тетЬетз) этого класса. По умолчанию все функции и переменные, объявленные в классе, становятся закрытыми для класса.

Это означает, что они доступны только для других членов того же класса. Для объявления открытых членов класса используется ключевое слово рвЬИс, за которым следует двоеточие. Все функции и переменные, объявленные после слова рввИс, доступны как для других членов класса, так и для любой другой части программы, в которой находится этот класс. Ниже приводится простое объявление класса: стаяя п1устаяя закрытый зленент класса Ы~ а; раЫъс: ;-о1а яес а ~тли лоло злсдея а(р р Этот класс имеет одну закрытую переменную а, и две открытые функции, зег аО и яег аО. Обратите внимание, что прототипы функций объявляются Глава Краткий обзор С~-ь 27 внутри класса.

Функции, которые объявляются внутри класса, называются функ(1иян и-клепами (гпеп1 бе~)нпс((от). Поскольку а является закрытой переменной класса, она недоступна для любой функции вне жус!ам. Однако поскольку ае! аО и ае! ао являются членами п1ус!азу, они имеют доступ к а. Более того, ае! ао и аеС аО, являясь открытыми членами 1вус!ааа, могут вызываться из любой части программы, использующей в(ус!аав. Хотя функции ве! а() и яе! а() и объявлены в п1ус1ааа, они еще не определены. Для определения функции-члена вы должны связать имя класса, частью которого является функция-член, с именем функции.

Это достигается путем написания имени функции вслед за именем класса с двумя двоеточиями. Два двоеточия называются оператором расширения области видимости (ссоре гею1иГ(оп брега(ог). Например, далее показан способ определения функций-членов ае! аО и яеС аО: ~оЫпус!.ааа: . "аес а (тпсппп1 зов тус1ааа::оет. а(1 ( тесссп а; Отметим, что и ае! ао и ае! ао имеют доступ к переменной а, которая для п(ус1ааа является закрытой.

Как уже говорилось, поскольку ае! аО и ае! ао являются членами гпус!аале, они могут напрямую оперировать с его закрытыми данными. При определении функции-члена пользуйтесь следующей основной формой: Титз воаар значения имя класса:: рааа функция (список параметров! ( ...// тело 4>ункции 1 Здесь имя класса — это имя того класса, которому принадлежит определяемая функция. Объявление класса п1ус!ааа не задает ни одного объекта типа 1пус!ааа, оно определяет только тип объекта, который будет создан при его фактическом объявлении. Чтобы создать объект, используйте имя класса, как спецификатор типа данных.

Например, в этой строке объявляются два объекта типа п1ус1ааа: гпус(ааи оЫ, оЬ2; // это обьекты типа пзус1ааа Самоучитель С++ Объявление класса является логической абстракцией, которая задает новый тип объекта. Объявление же объекта создает физическую сущность объекта такого типа. То есть, объект занимает память, а задание типа нет, После того как объект класса создан, можно обращаться к открытым членам класса, используя оператор точка 1.), аналогично тому, как осуществляется доступ к членам структуры. Предположим, что ранее объекты были объявлены, тогда следующие инструкции вызывают зе1 аО для объектов оЫ и оЬ2; о)о1.яес а(10); // установка версии а ооьекта ои равной 1() оЫ .яе~ а(99); /~ установка вероны а обьекта оья равной ЭЭ Как видно из комментариев, эти инструкции устанавливают значение переменной а объекта оЫ равной 10 и значение переменной а объекта оЬ2 равной 99. Каждый объект содержит собственную копию всех данных, объявленных в классе.

Это значит, что а в оЫ отлично от а в оЬ2. Каждый объект класса имеет собственную копию всех переменных, объявленных внутри класса. 1. В качестве первого простого примера, рассмотрим программу, в которой используется п)ус1азз, описанный в тексте, для задания значений а для оЫ и еЬ2 и вывода на экран этих значений для каждого объекта: () г пс1пг)е <1ояптеапг> пятну пагпеярасе яьог с1аяя гпус1аяя ( закрытая часть гпус1аяя тпп аГ рп)з11с: уотг( яеЕ а(1ПЕ ппп1]Г 'пг.дег.

а ( ); уо1г) гпус1аяя::яея а(1пе ппгп) ( а=ппгп; ) с++ обзор Краткий Глава (пг тус1аяя::дег а() ге(пгп а; (пг тпаьп ( ) гпус(ааа оЬ1, оЬ2," оЬ1.яег а(10)у оЬ2.яег а(99)„ сопт « оЬ1.9ег а() « "~п"; соис « оЬ2.9ег а() « "~п"; гегигп 0; Как и следовало ожидать, программа выводит на экран величины 10 и 99.

Этот фрагмент содержит ошибку ()1пс1ис)е <1оясгеалг> цягпд пашеярасе ясд; 1пс ьлатп() ( шус1аяя оЬ1, оЬ2; ОЬ1. а = 10; оЬ2.а = 99р ОБИВКА! к закрытому члену нет доступа для функции — не члена соцб «оЬ1. 9ег а () « "~п"; соцс « оЬ2.се~ а() « "1п"; гевагп 0; 3. Точно так же, как открытые функции-члены, могут существовать и открытые переменные-члены. Например, если бы а была объявлена в открытой секции тус!ааа, тогда к ней, как показано ниже, можно было бы обратиться из любой части программы: 2. В предыдущем примере переменная а в шус!ааа является закрытой.

Это означает, что она непосредственно доступна только для членов п(ус!ааа. (Это один из доводов в пользу существования открытой функции ~еФ ао.) Если вы попытаетесь обратиться к закрытому члену класса из той части вашей программы, которая не является членом этого класса, то результатом будет ошибка при компиляции. Например, предположим, что шус1ааа задан так, как показано в предыдущем примере, тогда компиляция функции ша(пО вызовет ошибку: Самоучитель 1)1пс1цде <1оясгеап~> иятпд патеярасе апо; с1аяя гпус1аяя рцЫ1с: теперь а открыта 1пя а; и здесь не нужны функции яег а !) и дес а О тпя юа1п1) 1 пус1аяя оЫ, оЬ2; здесь есть явный доступ к а оЬ1,а = 10; оЬ2.а = 99; соцс «оЫ,а « "1п"; соцб « оЬ2.а « "~п", гегигп 0; В этом примере, поскольку а объявлена открытым членом азус)аав, к ней имеется явный доступ из та)п0.

Обратите внимание, как оператор точка (.) используется для доступа к а. Обычно, когда вы вызываете функцию-член, или осуществляете доступ к переменной-члену не из класса, которому они принадлежат, за именем объекта должен следовать оператор точка (.), а за ним имя члена. Это необходимо для исчерпывающего определения того, с членом какого объекта вы имеете дело. 4. Чтобы по достоинству оценить возможности объектов, рассмотрим более практичный пример. В этой программе создается класс МаеК, реализующий стек, который можно использовать для хранения символов: 1)1псъц<)е <1ояг еаза> ця) пя патпеярасе яго; 4<)етъпе ЫУЕ 10 // Объявление класса ятасК для символов с1аяя я1асК ( снаг ягсК[Б12Е); // содержит стек )пг гоя; // индекс вершины стека риЬ11с: то1я) 1пъс1)' тт инициализация стека то1с ров)т(сбаг с)т); т/ помещает в стек символ снаг рор (); т/ вь:талкивает из стека символ Глава 1, Краткий обзор С++ // Инициализация стека ~оЫ ясас1::1п1с(] ( ~оз=0' // Помешение символа в стек ~о1с( запас)<::рця)т(сваг сй) ( (1оз=-Я12Е) соШ « "Стек полон"; те~цтп; яксМ(лоя) = сИ; соя++; Выталкивание символа из стека сагал з~асК::рор() 11 (~оя-=О) ( соцс « "Стек пуст"; тевцгп О; // возврат нуля при пустом стеке ) 1оя--; тевцсп зсс)<(соя) 1пк па1п() я~ас)< я1, з2; // создание двух стеков 1пс 1; // инициализация стеков з1.1п1Й () ( з2.1п1С() ~ я1.рця)т ('а'); я2.ризП ('х' ',; 51 -рпзп ( )о ) я2.рнера~('у')' з1.рвами ('с'); з2.рцзИ ('в') аког(1=0;1<3;1+.) сопл « "символ из я1:" « з1.рор() « "~п"р тот(1=0;1<3; 1++) соцс « "сиьжол из я2:" « я2.рор() « "1п"; тесптп О; 32 Самоучитель С++ Эта программа выводит на экран следующее: символ из 3 1: с символ из в1: О символ из в1: а символ из з2: а символ из в2: у символ из в2: х Давайте теперь детально проанализируем программу.

Класс в1ас1г содержит две закрытые переменные: в1ск и 1ов. Массив в1ск содержит символы, фактически помещаемые в стек, а 1оз содержит индекс вершины стека. Открытыми функциями стека являются 1п11О, рпвЦ) и рор(), которые, соответственно, инициализируют стек, помешают символ в стек и выталкивают его из стека. Внутри функции шп(по создаются два стека, в1 и з2, и по три символа по- мешаются в каждый из них. Важно понимать, что один объект (стек) не зависит от другого. Поэтому у символов в в1 нет способа влиять на символы в з2. Каждый объект содержит свою собственную копию в1ск и 1ов.

Это фундаментальная для понимания объектов концепция. Хотя все объекты класса имеют общие функции-члены, каждый объект создает и поддерживает свои собственные данные. 1. Введите и выполните программы, приведенные в этом разделе, если это еше не сделано. 2. Создайте класс спгв, который поддерживает каталог библиотечных карточек.

Этот класс должен хранить заглавие книги, имя автора и выданное на руки число экземпляров книги. Заглавие и имя автора храните в виде строки символов, а количество экземпляров — в виде целого числа. Используйте открытую функцию-член з1огеО для запоминания информации о книгах и открытую функцию-член в)1ои() для вывода информации на экран. В функцию ша1по включите краткую демонстрацию работы созданного класса.

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