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

Слайд 2

Доступ к элементам пространства имен Пространство имен определяет область видимости, следовательно,

Доступ к элементам пространства имен

Пространство имен определяет область видимости, следовательно, функции,

определенные в одном пространстве имен могут без ограничений использовать другие ресурсы, объявленные там же (переменные, типы и т.д.).
Доступ к элементам других пространств имен может осуществляться тремя способами:
1) с использованием квалификатора доступа, например:
ALPHA::LD или ALPHA::f()
2) с использованием объявления using, которое указывает, что некоторое имя доступно в другом пространстве имен:
namespace BETA { …
using ALPHA::LD;/* имя ALPHA::LD доступно в BETA*/ }
3) с использованием директивы using, которая объявляет все имена одного пространства имен доступными в другом пространстве:
namespace BETA { …
using ALPHA; /* все имена ALPHA доступны в BETA*/ }
Слайд 3

Непоименованное пространство имен Непоименованное пространство имен невидимо в других модулях: namespace

Непоименованное пространство имен

Непоименованное пространство имен невидимо в других модулях: namespace {

namespace-body }
При трансляции оно именуется как “unique”, доступное в самом модуле:
namespace unique { namespace-body }
using namespace unique;
Пример:
namespace { int i; } // unique::i
void f() { i++; } // unique::i++
namespace A {
namespace { int i,j;}} // A::unique::i A::unique::j
using namespace A;
void h()
{ i++; // unique::i или A::unique::i ?
A::i++; // A::i ?
j++; // A::unique::j++
}
Слайд 4

Глобальное пространство имен Приложение включает одно глобальное пространство имен. Имена, входящие

Глобальное пространство имен

Приложение включает одно глобальное пространство имен. Имена, входящие в

это пространство, объявляются без указания пространства имен.
Пример:
int i;
namespace A
{ int a, b, c;
namespace B {int i, j, k;}
}
int main()
{
A::a++;
A::B::i++;
::i++; // глобальное i
}
Слайд 5

Имена стандартных библиотек С++ Согласно стандарту ANSI/ISO C++ все имена ресурсов

Имена стандартных библиотек С++

Согласно стандарту ANSI/ISO C++ все имена ресурсов стандартных

библиотек определены в пространстве std. При этом подключаются файлы библиотек ,, и т.д.
Пример:
#include
int main()
{ std::cout << "Hello ";
using namespace std;
cout << "World." << endl;
}
Однако можно по-прежнему использовать определение ресурсов стандартных библиотек в глобальном пространстве. Для этого необходимо подключать , , и т.д. (кроме ).
Список доступных стандартных библиотек в старой и новой формах можно посмотреть в среде.