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


При чтении и записи в предыдущих темах использовались объекты std::cout и std::cin соответственно. Причем они использовались с префиксом std::. Этот префикс указывает, что объекты cout, cin, endl определены в пространствен имен std. А само двойное двоеточие :: представляет оператор области видимости (scope operator), который позволяет указать, в каком пространсте имен определен объект. И без префикса эти объекты по умолчанию мы использовать не можем.

Однако подобная запись может показаться несколько громоздкой. И в этом случае можно использовать оператор using, который позволяет ввести в программу объекты из различных пространств имен.

Использование оператора using имеет следующй формат:

using пространство_имен::объект
Например, пусть у нас есть следующая программа:

#include <iostream>

int main()
{
int age;
std::cout << "Input age: ";
std::cin >> age;
std::cout << "Your age: " << age << std::endl;
return 0;
}
Здесь используются сразу три объекта из програнства имен std: cout, cin и endl. Перепишем программу с использованием using:

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
int age;
cout << "Input age: ";
cin >> age;
cout << "Your age: " << age << endl;
return 0;
}
Для каждого объекта из пространства std определяется свое выражение using. При этом программа будет работать также как и раньше.