Директива using (C++)

Директива using позволяет использовать имена из пространства-имен без явного указания квалификатора имя-пространства-имен. Разумеется, для повышения удобочитаемости можно по-прежнему использовать полные квалифицированные имена.

using namespace [::] [ nested-name-specifier ] namespace-name

Заметки

Обратите внимание на различие между директивой using и декларацией using: объявление using позволяет использовать отдельное имя без квалификатора, а директива using позволяет использовать таким образом все имена из пространства имен. Это ключевое слово также используется для псевдонимов типа.

Если локальная переменная имеет такое же имя, как и переменная пространства имен, то переменная пространства имен будет скрытой. Создавать переменную пространства имен с те же именем, что и у глобальной переменной, является ошибкой.

Примечание

Для того чтобы снизить вероятность непредвиденного поведения IntelliSense, директиву using рекомендуется ставить в начале файла исходного кода.

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

В стандарте C++ ANSI/ISO установлено требование о том, чтобы пространство имен было явным образом определено в стандартной библиотеке. Например, при использовании библиотеки iostream необходимо указать пространство имен cout одним из следующих способов:

  • std::cout (explicitly)

  • using std::cout (объявление using)

  • using namespace std (директива using)

/clr

В следующем примере показано, как указать, что пространство имен в библиотеке базового класса .NET Framework пространство-имен может использоваться без явного указания квалификатора имя-пространства-имен.

// using_directive.cpp
// compile with: /c /clr
using namespace System::Reflection;
[assembly:AssemblyDescriptionAttribute("test")];

Пример

// using_directive2.cpp
// compile with: /EHsc
#include <iostream>

int main() {
   std::cout << "Hello ";
   using namespace std;
   cout << "World." << endl;
}
  

См. также

Ссылки

Пространства имен (C++)

Ключевые слова в C++