Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Топ:
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Интересное:
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Дисциплины:
|
из
5.00
|
Заказать работу |
|
|
|
|
Блок
Область действия уровня блока характеризуется тем, что идентификатор описанный в нём будет локальным. Такая область действия начинается в точке определения и заканчивается в конце блока. Видимость идентификатора будет очерчена пределами само блока и его внутренних блоков. Временем жизни будет считаться время до выхода из этого блока. После выхода из него память, выделенная под идентификатор, освобождается.
Файл
Идентификаторы, описанные вне любого блока, функции, класса или пространства имён имеют глобальную область видимости и постоянное время жизни, а также могут использоваться с момента их определения.
Функция
Единственными идентификаторами, имеющими такую область действия, являются метки операторов. В одной функции все метки должны различаться, но могут совпадать с метками других функций.
Прототип функции
Идентификаторы, указанные в списке параметров прототипа (объявления) функции, имеют областью действия только прототипа функции.
Класс
Элементы структур, объединений и классов (за исключением статических элементов) являются видимыми лишь в пределах класса. Элементы класса образуются при создании переменной указанного типа и разрушаются при ее уничтожении.
Поименованная область
C++ позволяет явным образом задать область определения имен как часть глобальной области с помощью оператора namespace.
Область видимости совпадает с областью действия за исключением ситуации, когда во вложенном блоке описана переменная с таким же идентификатором. В этом случае внешняя переменная во вложенном блоке невидима, хотя он и входит в ее область действия. Тем не менее, к этой переменной, если она глобальная, можно обратиться, используя операцию доступа к области видимости ::.
Способ обратиться к скрытой локальной переменной отсутствует!!!
Область видимости функции - любая функция автоматически видна во всех модулях программы. Если требуется ограничить область действия функции файлом, в котором она описана, используется модификатор static.
Пространство имён
В каждой области действия различают так называемые пространства имен. Под пространством имён понимается область, в пределах которой идентификатор должен быть уникальным.
В разных пространствах имена могут совпадать, поскольку разрешение ссылок осуществляется по контексту идентификатора в программе.
Пример:
| struct Node{ int Node; int i; } Node; |
В данном случае противоречия нет, поскольку имена типа, переменной и элемента структуры относятся к разным пространствам.
Классы идентификаторов в C++
В C++ определено четыре раздельных класса идентификаторов, в пределах каждого из которых идентификаторы должны быть уникальными.
Первый из них – идентификаторы переменных, функций, типов, определенных пользователем (typedef) и констант перечислений в пределах одной области видимости. Все они, за исключением идентификаторов функций, могут быть переопределены во вложенных блоках.
Второй класс - идентификаторы типов перечислений, структур, классов и объединений. Каждый идентификатор должен отличаться от идентификаторов других типов в той же области видимости.
Третий класс - элементы каждой структуры, класса и объединения. Идентификатор структуры элемента должен быть уникален внутри структуры.
Четвёртый класс – метки, образующие отдельное пространство имен.
Внешние объявления
Для того чтобы сделать доступной в нескольких модулях переменную или константу, необходимо:
Другой способ — поместить объявление в заголовочный файл и включить его в нужные модули.
Объявление, в отличие от определения, не создает переменную. Также важно то, что объявление, сделанное с использованием extern, не должно содержать инициализацию: если она присутствует, модификатор extern игнорируется.
Поименованные области
Поименованные области служат для логического группирования объявлений и ограничения доступа к ним. Простейшим примером применения является отделение кода, написанного одним человеком, от кода, написанного другим.
Механизм пространств имен вместе с директивой #include обеспечивают необходимую при написании больших программ гибкость путем сочетания логического группирования связанных величин и ограничения доступа.
Продуманное разбиение программы на модули, четкая спецификация интерфейсов и ограничение доступа позволяют организовать эффективную работу над проектом группы программистов.
Блок
Область действия уровня блока характеризуется тем, что идентификатор описанный в нём будет локальным. Такая область действия начинается в точке определения и заканчивается в конце блока. Видимость идентификатора будет очерчена пределами само блока и его внутренних блоков. Временем жизни будет считаться время до выхода из этого блока. После выхода из него память, выделенная под идентификатор, освобождается.
Файл
Идентификаторы, описанные вне любого блока, функции, класса или пространства имён имеют глобальную область видимости и постоянное время жизни, а также могут использоваться с момента их определения.
Функция
Единственными идентификаторами, имеющими такую область действия, являются метки операторов. В одной функции все метки должны различаться, но могут совпадать с метками других функций.
Прототип функции
Идентификаторы, указанные в списке параметров прототипа (объявления) функции, имеют областью действия только прототипа функции.
Класс
Элементы структур, объединений и классов (за исключением статических элементов) являются видимыми лишь в пределах класса. Элементы класса образуются при создании переменной указанного типа и разрушаются при ее уничтожении.
Поименованная область
C++ позволяет явным образом задать область определения имен как часть глобальной области с помощью оператора namespace.
Область видимости совпадает с областью действия за исключением ситуации, когда во вложенном блоке описана переменная с таким же идентификатором. В этом случае внешняя переменная во вложенном блоке невидима, хотя он и входит в ее область действия. Тем не менее, к этой переменной, если она глобальная, можно обратиться, используя операцию доступа к области видимости ::.
Способ обратиться к скрытой локальной переменной отсутствует!!!
Область видимости функции - любая функция автоматически видна во всех модулях программы. Если требуется ограничить область действия функции файлом, в котором она описана, используется модификатор static.
Пространство имён
В каждой области действия различают так называемые пространства имен. Под пространством имён понимается область, в пределах которой идентификатор должен быть уникальным.
В разных пространствах имена могут совпадать, поскольку разрешение ссылок осуществляется по контексту идентификатора в программе.
Пример:
| struct Node{ int Node; int i; } Node; |
В данном случае противоречия нет, поскольку имена типа, переменной и элемента структуры относятся к разным пространствам.
Классы идентификаторов в C++
В C++ определено четыре раздельных класса идентификаторов, в пределах каждого из которых идентификаторы должны быть уникальными.
Первый из них – идентификаторы переменных, функций, типов, определенных пользователем (typedef) и констант перечислений в пределах одной области видимости. Все они, за исключением идентификаторов функций, могут быть переопределены во вложенных блоках.
Второй класс - идентификаторы типов перечислений, структур, классов и объединений. Каждый идентификатор должен отличаться от идентификаторов других типов в той же области видимости.
Третий класс - элементы каждой структуры, класса и объединения. Идентификатор структуры элемента должен быть уникален внутри структуры.
Четвёртый класс – метки, образующие отдельное пространство имен.
Внешние объявления
Для того чтобы сделать доступной в нескольких модулях переменную или константу, необходимо:
Другой способ — поместить объявление в заголовочный файл и включить его в нужные модули.
Объявление, в отличие от определения, не создает переменную. Также важно то, что объявление, сделанное с использованием extern, не должно содержать инициализацию: если она присутствует, модификатор extern игнорируется.
Все описания одной и той же переменной должны быть согласованы.
Пример 1 представляет описание двух глобальных переменных в файлах one.cpp и two.cpp с помощью заголовочного файла my_header.h.
| Пример 1. // my_header.h - внешние объявления extern int a; extern double b; <...> // --------------------------------- // one.cpp #include "my_header.h" int a; <...> // --------------------------------- // two.cpp #include "my_header.h" double b; |
В данном случае обе переменные доступны в файлах one.cpp и two.cpp.
Если переменная описана как static, область ее действия ограничивается файлом, в котором она описана.
Правило одного определения
При описании типа следует придерживаться правила одного определения, то есть тип, используемый в программе, должен быть определен ровно один раз. Как правило, это делается в заголовочном файле, который затем подключается к модулям, использующим этот тип.
Так как компиляторы, в основном, не обладают возможностью отличать определения одного и того же типа в различных файлах, нарушение этого правила моет привести к ошибкам, которые сложно обнаружить.
Поименованные области
Поименованные области служат для логического группирования объявлений и ограничения доступа к ним. Простейшим примером применения является отделение кода, написанного одним человеком, от кода, написанного другим.
|
|
|
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!