<<
>>

Пространства имен в языке C++

Язык C++ содержит спецификацию namespace, которая помогает программам управлять глобальными пространствами имен. Каждую библиотеку можно поместить в свое собственное пространство имен и предварять какое-либо имя именем этого пространства (при использовании имени за пределами пространства).
Допустим, что существует заголовочный файл АТД, который реализует стеки. Если

428

Глава 15. Абстрактные типы данных

есть опасения, что некоторый другой библиотечный файл может заимствовать имя, которое уже используется в АТД стека, то файл, определяющий стек, можно поместить в собственное пространство имен. Достаточно разместить все объявления для стека в блоке пространства имен: namespace theStackSpace {

// Объявления стека

}

Файл реализации для АТД стека может ссылаться на имена, объявленные в заголовочном файле с помощью операции разрешения области видимости :: (двойное двоеточие), как показано в следующем примере: theStackSpace::tos

Файл реализации тоже можно поместить в блок пространства имен, идентичный тому, что использовался для заголовочного файла.

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

Программа клиента может получить доступ к именам из пространства имен библиотечного заголовочного файла тремя способами. Во-первых, имена из библиотеки квалифицируются именем пространства имен. Например, для ссылки на переменную tos надо записать: theStackSpace::tos

Это самый точный и ясный способ ссылки, скажем, из файла реализации.

Два других способа используют директиву using. Эта директива может применяться для квалификации отдельных имен из пространства имен, например, так: using theStackSpace::tos;

Такое предложение делает видимым только имя tos, но не другие имена из пространства имен theStackSpace.

Директива using может использоваться и для квалификации всех имен из пространства, как в следующем примере: using namespace theStackSpace;

Фрагмент, который включает эту директиву, получает непосредственный доступ к именам из пространства имен, в следующем стиле: х = tos;

В общем случае, при создании пространств имен в C++ используют и более изощренные правила, мы обсудили лишь основы.

Пространства имен языка C# используют те же механизмы и средства.

<< | >>

Еще по теме Пространства имен в языке C++:

  1. О языке и методе
  2. Установки — на естественном языке внутренней речи.
  3. Установки — на естественном языке внутренней речи.
  4. Формулировать задание внутренней природе организма следует на языке души
  5. Разминка антистрессовая, приемы и спецприемы, целевые установки — на естественном языке «внутренней речи».
  6. Разминка антистрессовая, приемы и спецприемы, целевые установки — на естественном языке «внутренней речи».
  7. Два пространства
  8. ПРОСТРАНСТВО: ВОСПРИЯТИЕ
  9. ПРОСТРАНСТВО: ВОСПРИЯТИЕ: НАРУШЕНИЕ
  10. ПРОСТРАНСТВО СЕМАНТИЧЕСКОЕ СУБЪЕКТИВНОЕ
  11. Часть I Пространство движения
  12. 5.10.1. Создание пространства для ответа
  13. ФАЗИРОВАНИЕ ПРОСТРАНСТВА