×
Traktatov.net » Язык программирования C++. Пятое издание » Читать онлайн
Страница 70 из 714 Настройки
>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

Упражнение 3.1. Перепишите упражнения из разделов 1.4.1 и 2.6.2, используя соответствующие объявления