Все, что вам нужно знать о пространстве имен в C ++



Эта статья предоставит вам подробные и всесторонние знания о пространстве имен в C ++. Это различные типы и варианты использования в любой программе.

Пространство имен в C ++ используется для организации кода в логические группы и предотвращения конфликтов имен, которые могут возникнуть, особенно когда ваша кодовая база включает несколько библиотек. В этой статье будут рассмотрены следующие указатели:

шаг за шагом обучение

Потребность в пространстве имен

Рассмотрим ситуацию: мы пишем код, в котором есть функция под названием abc (), и есть еще одна предопределенная библиотека, которая также имеет ту же функцию abc (). Теперь во время компиляции компилятор не знает, на какую версию функции abc () мы ссылаемся в нашем коде.





Пространство имен в c ++

Чтобы преодолеть эту трудность, создано пространство имен, которое используется в качестве дополнительной информации для различения похожих функций, переменных, классов и т. Д. С одинаковыми именами, доступных в разных библиотеках. Используя пространство имен, мы можем определить контекст, в котором определены имена. По сути, пространство имен определяет область видимости.



Все типы и функции стандартной библиотеки C ++ объявлены в пространстве имен std или пространствах имен, вложенных внутри std, поэтому они широко используются в большинстве программ.

Определение пространства имен

Чтобы определить пространство имен, мы начинаем с ключевого слова namespace, за которым следует имя пространства имен следующим образом:

namespace namespace_name {int a, b // объявления кода, где // a и b объявлены в // области namespace_name}

Что следует помнить при определении пространства имен

  • Объявления пространств имен появляются только в глобальной области.
  • Объявления пространств имен не имеют спецификаторов доступа.
  • Объявления пространства имен могут быть вложены в другое пространство имен.
  • Не нужно ставить точку с запятой после закрывающей фигурной скобки определения пространства имен.
  • Определение пространства имен можно разделить на несколько единиц.
#include using namespace std namespace first_function {void func () {cout<< 'Inside first_function' << endl } } namespace second_function { void func() { cout << 'Inside second_function' << endl } } int main () { // Calls function from first name space. first_function::func() // Calls function from second name space. second_function::func() return 0 }

Вывод:



В приведенном выше примере для определения функции func () два разных раза мы используем концепцию пространства имен. Мы определяем первую функцию в пространстве имен first_function ивторая функция в пространстве имен second_function. Для вызова этих функций мы используем оператор разрешения области видимости следующим образом - first_function :: func () и second_function :: func ().

Использование пространства имен в C ++

Есть три способа использовать пространство имен в программе:

  1. Директива using
  2. Объявление использования
  3. Оператор разрешения области видимости (: :)

Директива using

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

как инициализировать объект в Python

Рассмотрим заголовочный файл Namespace_first.h:

пространство имен First {int a class First_class {int i}}

Включение указанного выше файла заголовка пространства имен в файл Namespace_second.h: include «Namespace_first.h»

пространство имен Second {с использованием пространства имен First_class obj int y}

Мы импортируем namespace_First в namespace_Second, поэтому класс First_class теперь будет доступен в namespace_Second. Следовательно, мы можем написать следующую программу в отдельном файле, скажем, new_file.cpp.

#include 'Namespace_second.h' void test () {using namespace Second // создание объекта класса First_class First_class obj2}

Следовательно директива using значительно упрощает использование пространства имен в C ++ в любом месте.

Объявление использования

В объявлении using мы импортируем по одному конкретному имени за раз, которое доступно только внутри текущей области и вызывается с помощью разрешения области. ПРИМЕЧАНИЕ. Имя, импортированное с использованием-декларации, может переопределить имя, импортированное с помощью директивы using. Мы видим это в примере ниже.

Рассмотрим заголовочный файл New_File.h:

пространство имен First {void A () {cout<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }

Теперь давайте создадим новый файл программы с именем New_file_2.cpp со следующим кодом:

массив объектов java
#include 'New_file.h' void B () {using namespace First // использование директивы using Second :: A // использование объявления First :: A () // класс A () первого пространства имен A () // вызывает A () из второго пространства имен}

Оператор разрешения области (: :)

Мы можем явно указать любое имя, объявленное в пространстве имен, используя имя пространства имен и разрешение области « :: ' оператор с идентификатором.

namespace New_space {class X {static int i public: void func ()} // объявление имени класса class Y} // Инициализация статической переменной класса int New_space :: X :: i = 23 class New_space :: Y {int a public: int getdata () {cout<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }

Несмежное пространство имен в C ++

Как мы знаем, пространство имен в C ++ может быть определено в нескольких частях, поэтому оно состоит из суммы его отдельно определенных частей. Итак, если для одной части пространства имен требуется имя, определенное в другом файле, это имя все равно должно быть объявлено в его области видимости. Написание следующего пространства имен следующим образом либо определяет новое пространство имен, либо добавляет новые элементы к существующему:

пространство имен namespace_name {// тело кода}

Вложенное пространство имен в C ++

Пространства имен можно легко вкладывать, и мы можем определить одно пространство имен внутри другого пространства имен следующим образом:

namespace namespace_name1 {// тело кода пространства namespace_name1 namespace_name2 {// тело кода вложено namamespace_name2}}

На этом мы подошли к концу статьи о пространстве имен в C ++. Надеюсь, вы получили представление о том, что такое пространство имен в C ++ и каковы различные способы его определения. Если вы хотите узнать больше, ознакомьтесь с от Edureka, надежной компании онлайн-обучения. Курс обучения и сертификации по Java J2EE и SOA от Edureka разработан, чтобы обучить вас базовым и продвинутым концепциям Java, а также различным средам Java, таким как Hibernate и Spring.

Есть вопрос к нам? Пожалуйста, укажите это в разделе комментариев этого блога, и мы свяжемся с вами как можно скорее.