Директива using namespace
Директива using namespace делает все имена из указанного пространства имен доступными в текущей области видимости без необходимости каждый раз писать префикс этого пространства. В качестве параметра директива принимает имя пространства имен, которое требуется подключить. После применения директивы компилятор при поиске имен будет автоматически обращаться к указанному пространству.
Чаще всего директиву using namespace применяют для пространства имен std, чтобы не писать std:: перед каждым вызовом cout, cin, string и другими элементами стандартной библиотеки. Однако при этом следует помнить, что подключение всех имен сразу может привести к конфликтам имен, поэтому в больших проектах предпочтительнее использовать более точечную директиву using.
Синтаксис
using namespace name;
Пример
Давайте подключим пространство имен std и выведем строку на экран, не указывая префикс std:::
#include <iostream>
using namespace std;
int main()
{
cout << "abcde" << endl;
return 0;
}
Результат выполнения кода:
"abcde"
Пример
Давайте сравним работу с директивой using namespace и без нее. Сначала напишем код без директивы, используя полное имя std::cout:
#include <iostream>
int main()
{
std::cout << "12345" << std::endl;
return 0;
}
Результат выполнения кода:
12345
Пример
Директиву using namespace можно применять не только к пространству std, но и к собственным пространствам имен. Давайте создадим пространство math и подключим его внутри функции:
#include <iostream>
namespace math
{
int square(int x)
{
return x * x;
}
}
int main()
{
using namespace math;
std::cout << square(5) << std::endl;
return 0;
}
Результат выполнения кода:
25
Обратите внимание, что директива была применена внутри функции main, поэтому ее действие ограничено только этой функцией. За ее пределами имя square снова потребует указания пространства имен math::.