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




Определения пространства имен * - часть 2


Однако в разных пользовательских пространствах могут встречаться члены с одинаковыми именами.

Имя члена пространства имен автоматически дополняется, или квалифицируется, именем этого пространства. Например, имя класса matrix, объявленное в пространстве cplusplus_primer, становится cplusplus_primer::matrix, а имя функции inverse() превращается в cplusplus_primer::inverse().

Члены cplusplus_primer могут использоваться в программе с помощью спецификации имени:

void func( cplusplus_primer::matrix &m )

{

    // ...

    cplusplus_primer::inverse(m);

    return m;

}

Если в другом пользовательском пространстве имен (скажем, DisneyFeatureAnimation) также существует класс matrix и функция inverse() и мы хотим использовать этот класс вместо объявленного в пространстве cplusplus_primer, то функцию func() нужно модифицировать следующим образом:

void func( DisneyFeatureAnimation::matrix &m )

{

    // ...

    DisneyFeatureAnimation::inverse(m);

    return m;

}

Конечно, каждый раз указывать специфицированные имена типа

namespace_name::member_name

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




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