>using
(>using
declaration). Другие способы, позволяющие упростить использование имен из других пространств, рассматриваются в разделе 18.2.2.Объявление >using
позволяет использовать имена из другого пространства имен без указания префикса >имя_пространства_имен::
. Объявление >using
имеет следующий формат:
>using пространство_имен::имя;
После того как объявление >using
было сделано один раз, к указанному в нем имени можно обращаться без указания пространства имен.
>#include
>// объявление using; при использовании имени cin теперь
>// подразумевается, что оно принадлежит пространству имен std
>using std::cin;
>int main() {
> int i;
> cin >> i; // ok: теперь cin - синоним std::cin
> cout << i; // ошибка: объявления using нет; здесь нужно указать
> // полное имя
> std::cout << i; // ok: явно указано применение cout из
> // пространства имен std
> return 0;
>}
>using
Каждое объявление >using
применяется только к одному элементу пространства имен. Это позволяет жестко задавать имена, используемые в каждой программе. Например, программу из раздела 1.2 можно переписать следующим образом:
>#include
>// объявления using для имен из стандартной библиотеки
>using std::cin;
>using std::cout;
>using std::endl;
>int main() {
> cout << "Enter two numbers:" << endl;
> int v1, v2;
> cin >> v1 >> v2;
> cout << "The sum of " << v1 << " and " << v2
> << " is " << v1 + v2 << endl;
> return 0;
>}
Объявления >using
для имен >cin
, >cout
и >endl
означают, что их можно теперь использовать без префикса >std::
. Напомню, что программы С++ позволяют поместить каждое объявление >using
в отдельную строку или объединить в одной строке несколько объявлений. Важно не забывать, что для каждого используемого имени необходимо отдельное объявление >using
, и каждое из них должно завершаться точкой с запятой.
>using
Код в заголовках (см. раздел 2.6.3) обычно не должен использовать объявления >using
. Дело в том, что содержимое заголовка копируется в текст программы, в которую он включен. Если в заголовке есть объявление >using
, то каждая включающая его программа получает то же объявление >using
. В результате программа, которая не намеревалась использовать определенное библиотечное имя, может случайно столкнуться с неожиданным конфликтом имен.
Начиная с этого момента подразумевается, что во все примеры включены объявления >using
для имен из стандартной библиотеки. Таким образом, в тексте и примерах кода далее упоминается >cin
, а не >std::cin
.
Кроме того, для экономии места в примерах кода не будем показывать далее объявления >using
и необходимые директивы >#include
. В табл. А.1 приложения А приведены имена и соответствующие заголовки стандартной библиотеки, которые использованы в этой книге.
>#include
и >using
в свои примеры перед их компиляцией.Упражнение 3.1. Перепишите упражнения из разделов 1.4.1 и 2.6.2, используя соответствующие объявления