- •29. Как работать с массивом символов
- •30. Для чего необходимо динамическое распределение памяти
- •31. Использование ссылок
- •32. Функции, их объявление/определение
- •33. Как описывается передача параметров в функциях
- •34. Особенности работы с функциями, где в качестве параметров используется массив
- •35. Сопоставление фактических и формальных параметров
- •57. Ссылки. Понятие и _____
- •58. Глобальные, локальные, статические локальные и внешние переменные
- •59. Функция. Прототип функции и _____
- •61. Возвращаемые значения функции. Способы возвращения значения
- •62. Способы передачи параметров функции. Передача по значению
- •63. Способы передачи параметров. Передача по ссылке
- •64. Параметры ссылки
- •66. Многомерные массивы как параметры
- •67. Параметры функции, заданные по умолчанию
- •68. Функции подстановки
- •69. Перегруженные функции
- •70. Указатель на функцию
- •71. Виды областей видимости
- •72. Подходы к разработке структуры программ
71. Виды областей видимости
· Локальная
· Глобальная
· Классовая
Каждая функция представляет собой отдельную локальную область видимости. Внутри функции каждый составной оператор (блок), содержащий один или более операторов описания, тоже задает связанную с ним локальную область видимости. Время жизни такого объекта заканчивается с завершением работы функции (с выходом из блока), и его значение теряется. Список параметров из определения функции входит в локальную область видимости функции.
В С++ каждый класс образует собственную классовую область видимости, которая не совпадает ни с файловой, ни с какой-либо локальной.
Имена, определенные в файловой области видимости, видимы во всей программе. Вместе с тем, локальная переменная может повторно использовать имя глобальной переменной. В этом случае локальная переменная скрывает глобальную. Для доступа к такой глобальной переменной может использоваться операция глобальной области видимости. Это - унарная операция (::), указывающая на то, что используется имя из глобальной области видимости:
72. Подходы к разработке структуры программ
Программа является набором отдельных единиц компиляции, объединяемых компоновщиком. Нелокальные переменные инициализируются до вызова функции main(). Завершение программы происходит при выходе из main(), при вызове exit() или abort(). Определенный порядок инициализации глобальных переменных, расположенных в разных единицах трансляции, не гарантируется.
Есть два подхода к разработке структуры программы на языке С++.
Первый подход заключается в том, что функции и определения данных размещаются в нескольких исходных файлах, а типы, необходимые для их взаимодействия - в один заголовочный файл, который включается во все остальные файлы. Если отдельные части программы относительно независимы и могут быть использованы отдельно, то такой подход применять нецелесообразно
Другой подход заключается в том, что каждая часть программы имеет свой заголовочный файл, в котором используются предоставляемые этой частью средства. Тогда каждый .срр файл включает свой собственный .h файл (где объявлено то, что в этом .cpp файле определяется) и, возможно, некоторые другие .h файлы (где объявлено то, что ему нужно). При таком стиле использования заголовочных файлов .h файл и связанный с ним .cpp файл можно рассматривать как отдельный модуль. Такое построение программы позволяет разбить программу на независимые части. Если какая-либо часть использует средства, предоставляемые другой частью, то это указывается явно с помощью #include.
Если какую-либо функцию или переменную описать как static, то она будет известна только в пределах модуля.