3.6.2.2 Пространства имен
Большинство нетривиальных приложений состоят из нескольких файлов с исходным текстом программы. Эти файлы могут создаваться и обслуживаться группой программистов. В конце концов, все файлы собираются вместе и проходят через финальную процедуру сборки готового приложения. Традиционно принято, чтобы все имена, не заключенные в некоторой локальной области (функции, теле класса или модуле трансляции), разделяли общие глобальные имена. Поэтому повторное определения имен, обнаруженное в процессе сборки отдельных модулей, приводит к необходимости каким-то образом различать каждое имя. Решение этой проблемы в C++ возложено на механизм пространства имен (namespace).
Этот механизм позволяет разбить приложение на ряд подсистем, причем каждая подсистема свободна в отношении выбора имен, и ее автор не должен беспокоиться о том, что такие же имена будет использовать кто-то другой. Каждая подсистема идентифицирует свое появление в общем пространстве глобальных имен уникальным идентификатором, который следует за ключевым словом namespace:
namespace <идентификатор> { [<объявления>] } Существует три способа доступа к элементам идентифицированного пространства имен:
• Явная квалификация доступа к конкретному элементу:
ALPHA :: varl; // доступ к переменной из ALPHA BETA :: Fl; // доступ к функции из BETA
• Доступ ко всем элементам:
using namespace :: ALPHA; // доступ ко всем именам из ALPHA
• Объявление нового идентификатора в локальном пространстве имен:
using :: new_name; // добавление идентификатора
- 3.1 Инкапсуляция
- 3.2 Классы, компоненты и объекты
- 3.3 Наследование
- 3.4 Разработка классов
- 3.4.1 Объявление базового класса
- 3.4.3 Объявление производных классов
- 3.5 Полиморфизм
- 3.5.1 Виртуальные функции
- 3.5.2 Дружественные функции
- 3.6.1 Компоненты
- 3.6.1.1 Объявления компонентных классов
- 3.6.1.3 Объявления обработчиков событий '
- 3.6.1.4 Объявления автоматизированных свойств и методов
- 3.6.1.6 Расширенные типы данных Delphi
- Variant Вариантное значение, 16 байт Variant class
- 3.6.2.2 Пространства имен
- 3.6.2.3 Явные объявления
- 3.6.2.6 Исключения
- 3.7 Итоги