Почему важно писать «используя пространство имен std» в программе на C++?

Опубликовано: 15 Сентября, 2022

В этой статье мы обсудим использование «использования пространства имен std» в программе на C++.

Необходимость пространства имен :

  • Поскольку одно и то же имя не может быть присвоено нескольким переменным, функциям, классам и т. д. в одной области видимости.
  • Поэтому, чтобы преодолеть эту ситуацию, вводится пространство имен.

Программа 1:

Ниже приведена программа на C++, иллюстрирующая использование пространства имен с одинаковыми именами функции и переменных:

Объяснение:

  • В приведенном выше примере программы и n1 , и n2 имеют переменную и функцию с одинаковыми именами x и fun() соответственно.
  • Пространство имен используется для уменьшения или ограничения области действия любой переменной или функции.
  • Как и в приведенном выше коде, переменная x и метод fun() были ограничены пространствами имен n1 и n2 . Таким образом, их область применения не выходила за пределы n1 или n2 .
  • Каждый раз, когда использование оператора разрешения области (::) в переменной или определенной функции не требуется, это можно решить с помощью директивы « using ».
  • Использование директивы означает включение всего кода, написанного в пространстве имен, в закрывающую область.

Программа 2:

Ниже приведена программа на C++, демонстрирующая использование директивы «using»:

Объяснение:

  • В приведенной выше программе после написания «using namespace n1 » нет необходимости использовать разрешение области для использования членов n1 .
  • Его можно интерпретировать как «использование» копий кода, написанного в пространстве имен, в области, в которой он был написан.

Если внутри main() написано «using namespace n1 » и попытка использовать члены (в данном случае fun() и x ) в разных функциях, это выдаст ошибку времени компиляции.

Программа 3:

Ниже приведена программа на C++, иллюстрирующая использование «использования пространства имен» внутри функции main():

C++




// C++ program illustrating the use
// of "using namespace" inside main()
 
#include <iostream>
using namespace std;
 
// Namespace n1
namespace n1 {
int x = 2;
void fun()
{
    cout << "This is fun() of n1"
         << endl;
}
}
 
// Function calling function
void print()
{
    // Gives error, used without ::
    fun();
}
 
// Driver Code
int main()
{
    // Namespace inside main
    using namespace n1;
 
    cout << x << endl;
 
    // Function Call
    fun();
 
    return 0;
}

Выход:

Объяснение:

  • Известно, что «std» (сокращение от стандарта) — это пространство имен, члены которого используются в программе.
  • Таким образом, членами пространства имен «std» являются cout, cin, endl и т. д.
  • Это пространство имен присутствует в заголовочном файле iostream.h.
  • Ниже приведен фрагмент кода на C++, показывающий содержимое, написанное внутри iostream.h:

C++




// Code written in the iostream.h file
 
namespace std {
ostream cout;
i0stream cin;
// and some more code
}

Объяснение:

  • Теперь, когда cout<<“GeeksforGeeks”; написано, компилятор ищет cout в нашей программе, которая хранится в пространстве имен std, поэтому компилятору дана инструкция, что, если компилятор ничего не находит в текущей области, попробуйте найти это в пространстве имен std.
  • Нет необходимости писать пространство имен, просто используйте разрешение области видимости (::) каждый раз, когда используются члены std. Например, std::cout , std::cin , std::endl и т. д.

Программа 4:

Ниже приведена программа C++, иллюстрирующая использование std:

Объяснение: Вывод программы будет одинаковым, независимо от того, пишете ли вы «используя пространство имен std» или используете разрешение области.

C++