С++ для начинающих



Гбо цена узнать больше. |

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


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

За идентификатором пространства имен следует блок в фигурных скобках, содержащий различные объявления. Любое объявление, допустимое в области видимости глобального пространства, может встречаться и в пользовательском: классы, переменные (вместе с инициализацией), функции (вместе со своими определениями), шаблоны.

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

namespace cplusplus_primer {

    class matrix { /* ... */ };

    void inverse ( matrix & );

    matrix operator+ ( const matrix &ml, const matrix &m2 )

        {/* ... */ }

    const double pi = 3.1416;

}

Именем класса, объявленного в пространстве cplusplus_primer, будет

cplusplus_primer::matrix

Именем функции

cplusplus_primer::inverse()

Именем константы

cplusplus_primer::pi

Имя класса, функции или константы расширяется именем пространства, в котором они объявлены. Такие имена называют квалифицированными.

Определение пространства имен не обязательно должно быть непрерывным. Например, предыдущее пространство могло быть определено таким образом:

namespace cplusplus_primer {

    class matrix { /* ... */ };

    const double pi = 3.1416;

}

namespace cplusplus_primer {

    void inverse ( matrix & );

    matrix operator+ ( const matrix &ml, const matrix &m2 )

        {/* ... */ }

}

Два приведенных примера эквивалентны: оба задают пространство имен cplusplus_primer, содержащее класс matrix, функцию inverse(), константу pi и operator+(). Определение пространства имен может состоять из нескольких соединенных частей.




Содержание  Назад  Вперед