Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмизация.docx
Скачиваний:
7
Добавлен:
21.11.2019
Размер:
59.12 Кб
Скачать

71. Виды областей видимости

· Локальная

· Глобальная

· Классовая

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

В С++ каждый класс образует собственную классовую область видимости, которая не совпадает ни с файловой, ни с какой-либо локальной.

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

72. Подходы к разработке структуры программ

Программа является набором отдельных единиц компиляции, объединяемых компоновщиком. Нелокальные переменные инициализируются до вызова функции main(). Завершение программы происходит при выходе из main(), при вызове exit() или abort(). Определенный порядок инициализации глобальных переменных, расположенных в разных единицах трансляции, не гарантируется.

Есть два подхода к разработке структуры программы на языке С++.

Первый подход заключается в том, что функции и определения данных размещаются в нескольких исходных файлах, а типы, необходимые для их взаимодействия - в один заголовочный файл, который включается во все остальные файлы. Если отдельные части программы относительно независимы и могут быть использованы отдельно, то такой подход применять нецелесообразно

Другой подход заключается в том, что каждая часть программы имеет свой заголовочный файл, в котором используются предоставляемые этой частью средства. Тогда каждый .срр файл включает свой собственный .h файл (где объявлено то, что в этом .cpp файле определяется) и, возможно, некоторые другие .h файлы (где объявлено то, что ему нужно). При таком стиле использования заголовочных файлов .h файл и связанный с ним .cpp файл можно рассматривать как отдельный модуль. Такое построение программы позволяет разбить программу на независимые части. Если какая-либо часть использует средства, предоставляемые другой частью, то это указывается явно с помощью #include.

Если какую-либо функцию или переменную описать как static, то она будет известна только в пределах модуля.