Инструкция namespace (от англ. пространство имен) ограничивает область видимости имен, используемых в заданном пространстве имен, что позволяет эксплуатацию одного и того же имени в разных контекстах без появления конфликтов. Основная форма применения namespace:
namespaceимя {
// объявления
}
Для получения доступа к члену пространства имен извне впереди имени члена указывается имя пространства имен с оператором расширения области видимости.
Подробнее рассмотрим инструкцию using. При частом обращении к членам пространства имен постоянное указание имени пространства имен и оператора расширения видимости требует времени. В связи с этим была разработана инструкция using, которая имеет две основные формы:
using namespace имя; Применение этой формы позволяет получить доступ ко всем членам, указанным в данном пространстве имен, и производить работу непосредственно с ними.
using имя::член; При применении этой формы видимым становится только данный член пространства имен.
Также можно выделить несколько разновидностей пространств: вложенные, встроенные и анонимные, или неименованные.
Вложенные пространства имен — пространства, имеющие абсолютный доступ к членам родительского пространства, в то время как члены родительского не обладают таким доступом к вложенному пространству. Пространства имен применяются для инкапсулирования данных, не принадлежащих интерфейсу родительского пространства имен.
Встроенные пространства имен — пространства, обрабатывающиеся как члены родительского пространства, что позволяет: выполнение поиска перегруженных функций; объявление специализации для шаблонов. Также используется в качестве механизма управления изменениями в библиотеке.
Анонимные, или неименованные, пространства имен — явные пространства без присвоения им имени. Используются при выполнении объявлений переменных невидимыми для других файлов без создания именованного пространства. Весь код того файла будет определять идентификаторы в неименованном пространстве имен, но при этом идентификаторы и пространство имен будут невидимы вне файла.
Таким образом, пространства имен являются важнейшим инструментом при разработке сложных информационных систем. Они позволяют разделить функции, переменные и классы между различными абстрактными группами, что, с свою очередь, облегчит понимание концептуальной модели системы для других разработчиков.
Список используемой литературы:
Либерти Д. Освой самостоятельно С++ за 21 день: Учебное пособие: [пер. с англ.] / Д. Либерти. – 3-е изд. – Москва : Вильямс, 2000. – 815 стр.