8.6. Использование членов пространства имен А

8.6. Использование членов пространства имен А

Использование квалифицированных имен при каждом обращении к членам пространств может стать обременительным, особенно если имена пространств достаточно длинны. Если бы удалось сделать их короче, то такие имена проще было бы читать и набивать. Однако употребление коротких имен увеличивает риск их совпадения с другими, поэтому желательно, чтобы в библиотеках применялись пространства с длинными именами.

К счастью, существуют механизмы, облегчающие использование членов пространств имен в программах. Псевдонимы пространства имен, using-объявления и using-директивы помогают преодолеть неудобства работы с очень длинными именами.

8.6.1. Псевдонимы пространства имен

Псевдоним пространства имен используется для задания короткого синонима имени пространства. Например, длинное имя

namespace International_Business_Machines

{ /* ... */ }

может быть ассоциировано с более коротким синонимом:

namespace IBM = International_Business_Machines;

Объявление псевдонима начинается ключевым словом namespace, за которым следует короткий псевдоним, а за ним – знак равенства и исходное полное имя пространства. Если полное имя не соответствует никакому известному пространству, это ошибка.

Псевдоним может относиться и к вложенному пространству имен. Вспомним слишком длинное определение функции func() выше:

#include "primer.h"

// трудно читать!

void func( cplusplus_primer::MatrixLib::matrix m )

{

// ...

cplusplLis_primer::MatrixLib::inverse( m );

return m;

}

Разрешается задать псевдоним для обозначения вложенного cplusplLis_primer::MatrixLib, сделав определение функции более удобным для восприятия:

#include "primer.h"

// более короткий псевдоним

namespace mlib = cplusplus_primer::MatrixLib;

// читать проще!

void func( mlib::matrix m )

{

// ...

mlib::inverse( m );

return m;

}

Одно пространство имен может иметь несколько взаимозаменяемых псевдонимов. Например, если псевдоним Lib ссылается на cplusplus_primer, то определение функции func() может выглядеть и так:

// псевдоним alias относится к пространству имен cplusplus_primer

namespace alias = Lib;

void func( cplusplus_primer::matrix m ) {

// ...

alias::inverse( m );

return m;

}

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

8.5.9 Видимость Имен Членов

Из книги C++ автора Хилл Мюррей

8.5.9 Видимость Имен Членов Члены класса, описанные с ключевым словом class, являюся закрытыми, то есть, их имена могут использоваться только функциями членами (#8.5.2) и друзьями (см. #8.5.10), если они не стоят после метки «public:». В этом случае они являются открытыми. Открытый член


Пользовательские пространства имен

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Пользовательские пространства имен До этого момента мы создавали небольшие тестовые программы, используя пространства имен, существующие в среде .NET (в частности, пространство имен System). Но иногда при создании приложения бывает удобно объединить связанные типы в одном


Вложенные пространства имен

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

Вложенные пространства имен Совершенствуя организацию своих типов, вы имеете возможность определить пространства имен в рамках других пространств имен. Библиотеки базовых классов .NET часто используют такие вложений, чтобы обеспечить более высокий уровень организации


Пространства имен ASP.NET 2.0

Из книги Стандарты программирования на С++. 101 правило и рекомендация автора Александреску Андрей

Пространства имен ASP.NET 2.0 В библиотеках базовых классов .NET 2.0 предлагается не менее 34 пространств имен, имеющих отношение к Web. Всю эту совокупность пространств имен можно разбить на четыре главные группы.• Базовые функциональные возможности (типы, обеспечивающие


Пространства имен .NET для Web-сервисов XML

Из книги Технология XSLT автора Валиков Алексей Николаевич

Пространства имен .NET для Web-сервисов XML Теперь, когда у вас есть база для понимания принципов функционирования Web-сервисов XML, мы с вами можем заняться построением такого объекта в рамках платформы .NET. Библиотеки базовых классов определяют целый ряд пространств имен,


1.4. Пространства имен

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

1.4. Пространства имен Если два неродственных процесса используют какой-либо вид IPC для обмена информацией, объект IPC должен иметь имя или идентификатор, чтобы один из процессов (называемый обычно сервером — server) мог создать этот объект, а другой процесс (обычно один или


Пространства имен и модули

Из книги C++ для начинающих автора Липпман Стенли

Пространства имен и модули Системы имеют подсистемы, которые в свою очередь состоят из подсистем и так до бесконечности — именно поэтому мы всегда движемся сверху вниз. — Алан Перлис (Alan Perlis) Пространство имен — очень важный инструмент для управления именами и снижения


Пространства имен

Из книги автора

Пространства имен В программе на языке Си имена (идентификаторы) используются для ссылок на различного рода объекты — функции, переменные, формальные параметры и т. п. При соблюдении определенных правил, описанных в данном разделе, допускается использование одного и


2.7. Использование пространства имен

Из книги автора

2.7. Использование пространства имен Предположим, что мы хотим предоставить в общее пользование наш класс Array, разработанный в предыдущих примерах. Однако не мы одни занимались этой проблемой; возможно, кем-то где-то, скажем, в одном из подразделений компании Intel был


8.5. Определения пространства имен А

Из книги автора

8.5. Определения пространства имен А По умолчанию любой объект, функция, тип или шаблон, объявленный в глобальной области видимости, также называемой областью видимости глобального пространства имен, вводит глобальную сущность. Каждая такая сущность обязана иметь


8.5.1. Определения пространства имен

Из книги автора

8.5.1. Определения пространства имен Определение пользовательского пространства имен начинается с ключевого слова namespace, за которым следует идентификатор. Он должен быть уникальным в той области видимости, в которой определяется данное пространство; наличие другой


8.5.3. Вложенные пространства имен

Из книги автора

8.5.3. Вложенные пространства имен Мы уже упоминали, что пользовательские пространства имен могут быть вложенными. Такие пространства применяются для дальнейшего структурирования кода нашей библиотеки.// ---- primer.h ----namespace cplusplus_primer {// первое вложенное пространство имен://


8.5.5. ПОО и члены пространства имен

Из книги автора

8.5.5. ПОО и члены пространства имен Как уже было сказано, определение пространства имен может состоять из разрозненных частей и размещаться в разных файлах. Следовательно, член пространства разрешено объявлять во многих файлах. Например:// primer.hnamespace cplusplus_primer {// ...void inverse(


8.5.6. Безымянные пространства имен

Из книги автора

8.5.6. Безымянные пространства имен Может возникнуть необходимость определить объект, функцию, класс или любую другую сущность так, чтобы она была видимой только в небольшом участке программы. Это еще один способ решения проблемы засорения глобального пространства