К Т П           План занятия                                                              1                                           Страницы  | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 |

5. Псевдонимы и вложенные пространства имен

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

#include <iostream>
namespace Boo
{
    namespace Doo
    {
        const int g_x = 7;
    }
}
int main()
{
    std::cout << Boo::Doo::g_x;
    return 0;
}

Обратите внимание, поскольку Doo находится внутри Boo, то доступ к g_x осуществляется через Boo::Doo::g_x.

Так как это не всегда удобно и эффективно, то C++ позволяет создавать псевдонимы для пространств имен:

#include <iostream>
 
namespace Boo
{
  namespace Doo
 {
      const int g_x = 7;
  }
}
namespace Foo = Boo::Doo; // Foo теперь считается как Boo::Doo
int main()
{
  std::cout << Foo::g_x; // это, на самом деле, Boo::Doo::g_x
  return 0;
}

Стоит отметить, что пространства имен в C++ не были разработаны, как способ реализации информационной иерархии — они были разработаны в качестве механизма предотвращения возникновения конфликтов имен. Как доказательство этому, вся Стандартная библиотека шаблонов находится в единственном пространстве имен std::

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

 

 

 


Предыдущая        В начало страницы       Следующая
5