using. Подключение пространств имен и определение псевдонимов

Последнее обновление: 16.02.2023

При чтении и записи в предыдущих темах использовались объекты 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;
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850