Главная » Просмотр файлов » А.В. Столяров - Введение в язык Си++

А.В. Столяров - Введение в язык Си++ (1114949), страница 15

Файл №1114949 А.В. Столяров - Введение в язык Си++ (А.В. Столяров - Введение в язык Си++) 15 страницаА.В. Столяров - Введение в язык Си++ (1114949) страница 152019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

45.68Повторим, что введённое таким образом статическое поле будет су­ществовать в программе в единственном экзем пляре и в течениевсего времени выполнения п рограм м ы вне всякой зависимости оттого, будут ли в вашей программе заводиться объекты класса А й в какихколичествах. Если поместить объявление статического поля в приватнойчасти класса, то соответствующее имя будет доступно только в методахкласса и в «дружественных» функциях. Объявление можно поместить ив открытую часть класса. В этом случае оно будет доступно отовсюду, аобратиться к нему можно будет как через существующий объект, так ибез всякого объекта с помощью явного раскрытия области видимости:А а;a .th e _ s ta tic _ f ie ld = 15; / / правильноA ::th e _ s ta tic _ fie ld = 15; / / тоже правильноСледует отметить, что статические поля схожи с глобальными переменными втом числе и тем, что в них программа может н а к а п л и в а т ь г л о б а л ь н о е сост ояние,в результате чего для стороннего наблюдателя поведение одних и тех же функ­ций окажется изменяющимся по неочевидным законам.

Кроме того, статическиеполя могут существенно затруднить масштабирование программы. Так, если вамзачем-то понадобился список объектов определённого класса и вы ввели для этойцели статический указатель на первый элемент такого списка, то это означает, чтов программе такой список может быть только один, а если когда-нибудь понадо­бится два таких списка (из объектов одного и того же типа), программу придётсяочень серьёзно переделать.Поэтому использование статических полей рекомендуется в одной и только од­ной ситуации: когда такое поле представляет собой константу, то есть его значе­ние никогда не изменяется во время работы программы. Например, статическимможно объявить какой-нибудь крупный массив, содержащий н е и з м е н н ы е данные,необходимые для работы объектов данного класса, но не требующиеся нигде заего пределами. Примером такого массива могут служить, например, таблица пе­реходов между состояниями конечного автомата в классе, реализующем этот ко­нечный автомат; массив строк с возможными диагностическими сообщениями;таблица соответствия пользовательских команд (строк) вызываемым функциям,и т.п.§ 2.21.2.

Статические методыС т а т и ч е с к и й м е т о д — это особый вид функции-метода, которая,являясь методом класса и имея доступ к его закрытым деталям реали­зации, при этом вы зы вается независимо от объектов к ласса. Пер­воначально статические методы предназначались для работы со стати­ческими полями, но получившийся механизм нашел в итоге существенноболее широкий спектр применений. Описание статического метода ана­логично описанию обычного метода, но перед таким описанием ставитсяключевое слово s t a t ic , как в следующем примере:69c la s s C ls {//...s t a t i c in t TheStaticM ethod(int a, in t b ) ;//...Обращение к статическому методу, как и к статическому полю, возможнокак через объект класса, так и без такового, с помощью символа раскры­тия области видимости:C ls : :TheStaticM ethod(5, 15); / / всё правильноCls с ;с .TheStaticM ethod(5, 15); / / так тоже можноПоскольку статическая функция-метод может быть вызвана без объ­екта, у неё, как следствие, отсутствует неявный параметр th is (см.§ 2.1.2).

Кроме всего прочего, это означает, что такая функция не можетпросто так обращаться, как другие методы, к полям объекта, ведь объ­екта у неё нет. Вызывать нестатические функции-методы статическаяфункция тоже просто так не может, поскольку нестатические методыдолжны вызываться для конкретного объекта. Ситуация кардинальноменяется, если статическая функция тем или иным способом всё-таки по­лучает доступ к объекту своего класса. Такое вполне может произойти иникоим образом не противоречит определению статического метода: дей­ствительно, никто не мешает передать объект через один из явно обозна­ченных параметров; вполне возможно получить доступ к объекту своегокласса через глобальные переменные или с помощью глобальных функ­ций; наконец, стати ческая ф ун кц и я вполне м ож ет со зд ать объектсама.Итак, несмотря на отсутствие указаний на конкретный объект привызове статической функции, она в некоторых случаях может получитьдоступ к объекту своего класса.

И тогда стати ческая ф ун кци я, каки любой метод к л асса, м ож ет о бращ аться к зак р ы ты м (при ват­ным) полям и м етодам объекта (действительно, как уже говорилосьранее, единицей защиты в С и + + является не объект, а класс или струк­тура целиком).Наличие в С и + + статических методов позволяет в ряде случаевприменять весьма изящные приёмы программирования. Например, мывполне можем убрать в закрытую часть класса все имеющиеся конструк­торы, запретив, таким образом, создание объектов данного класса извнеего самого, и поручить создание объектов статическому методу, которыйможно вызвать, не имея ни одного объекта.703.

Обработкаисключительных ситуаций§3.1. О ш ибочны е ситуации и проблем ы ихобработкиЛюбая сколь бы то ни было нетривиальная программа содержитфрагменты, которые в некоторых обстоятельствах не могут отработатькорректно. Например, программа, анализирующая содержимое заданно­го файла, не сможет работать, не сумев открыть файл на чтение; про­грамма, работающая по компьютерной сети, не сможет работать, если неработает сеть или если недоступен нужный сервер; функция, произво­дящая сложные вычисления, не может корректно их завершить, если входе вычислений потребовалось деление на ноль или, например, вычис­ление логарифма по единичному основанию, и т. п. Подобные ситуацииназывают ошибочными, однако же это совершенно не обязательно озна­чает, что ошибся программист, писавший программу.

В случае с файлом«виноват» в возникновении ошибочной ситуации, скорее всего, пользо­ватель, в случае с сетью — обслуживающий персонал сети или сервера;пример с делением на ноль указывает на ошибку программиста, вызвав­шего функцию для некорректных исходных параметров, но это можетбыть не тот программист, который написал саму функцию.Иначе говоря, мы при написании программ часто сталкиваемся сослучаями, когда успешная работа нашей программы зависит от внешнихусловий, которые мы сами гарантированно обеспечить не можем.

В такихслучаях приходится предусматривать в программе о бр аботк у ош ибок.Проверить все нужные условия обычно несложно. Существенно слож­нее может оказаться следующий вопрос: а что же делать, если условияоказались неудовлетворительны,— не открылся файл, не установилосьсоединение, в делителе оказался ноль,— то есть возникла та самая оши­бочная ситуация? Многие студенты в такой ситуации поступают просто,71дёшево и сердито: печатают какое-нибудь сообщение (очень часто про­сто "ERROR") и завершают выполнение программы, например, вызовомe x it ().

В реальной жизни такой вариант, как правило, недопустим. Что­бы понять причины этой недопустимости, представьте себе, что вы долгонабирали текст в каком-нибудь текстовом редакторе, потом при сохра­нении случайно ввели неправильное имя директории или, например, по­пытались осуществить запись на защищённый носитель. Если бы автортекстового редактора обрабатывал ошибки «по-студенчески», программаредактора бы немедленно завершилась, уничтожив все результаты вашейработы.

Маловероятно, что такое могло бы вам понравиться.Более того, не всегда и не везде можно так вот просто «напечатать со­общение». Например, при программировании оконного приложения подMS Windows никакого потока стандартного вывода в распоряжении про­граммиста нет, так что вместо печати необходимо создавать модальныйдиалог с соответствующим текстом и кнопками. Под ОС Unix всё не такплохо, поток стандартного вывода есть всегда, есть даже специальныйпоток для вывода сообщений об ошибках; проблема только в том, чтодалеко не во всех случаях результаты вывода в эти потоки кто-то чи­тает, и в некоторых случаях следует вместо них пользоваться системойжурнализации.Кроме того, не все ошибочные ситуации фатальны.

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

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

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

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