При чтении и записи в предыдущих темах использовались объекты 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;
}
Здесь используются сразу три объекта из пространства имен 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;
}
Для каждого объекта из пространства std определяется свое выражение using. При этом программа будет работать также как и раньше.
Ключевое слово using также позволяет определять псевдонимы для типов. Это может пригодиться, когда мы работаем с типами с длинными названиями, а определение коротких псевдонимов позволит сократить код. Например:
#include <iostream>
using ullong = unsigned long long;
int main()
{
ullong n {10234};
std::cout << n << std::endl;
}
В данном случае для типа unsigned long long определен псевдоним ullong. Стоит отметить, что это именно определение псевдонима, а НЕ определение
нового типа.
Стоит отметить, что для определения псевдонимов в С++ также может использоваться старый подход в стиле языка С с помощью оператора typedef:
#include <iostream>
typedef unsigned long long ullong;
int main()
{
ullong n {10234};
std::cout << n << std::endl;
}