|
|
||
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 |