Latest web development tutorials

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

Представьте себе ситуацию, когда существует класс по имени Зара два студента, чтобы четко различать между ними, мы используем имя снаружи, пришлось использовать некоторую дополнительную информацию, например, их домашний адрес или их родителей имя и т.д.

Такая же ситуация возникает в приложении C ++. Например, вы могли бы написать функцию с именем хуг (), в другой библиотеке доступного есть также та же функция хуг (). Таким образом, компилятор не может определить, что вы используете функцию АБВ ().

Таким образом, введение концепциипространств имен, предназначенный для решения вышеуказанных проблем, он может быть использован в качестве дополнительной информации , чтобы различать разные библиотеки с теми же функциями имен, классы, переменные, и так далее.Использование пространства имен, определенный контекст. В сущности, пространство имен является определение диапазона.

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

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

namespace namespace_name {
   // 代码声明
}

Для того, чтобы вызвать функцию или переменную с пространством имен, вам нужно поставить перед ней с именем пространства имен, выглядит следующим образом:

name::code;  // code 可以是变量或函数

Давайте посмотрим, как определение пространства имен для объекта и другой переменной или функции:

#include <iostream>
using namespace std;

// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
}
// 第二个命名空间
namespace second_space{
   void func(){
      cout << "Inside second_space" << endl;
   }
}
int main ()
{
 
   // 调用第一个命名空间中的函数
   first_space::func();
   
   // 调用第二个命名空间中的函数
   second_space::func(); 

   return 0;
}

Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:

Inside first_space
Inside second_space

используя инструкцию

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

#include <iostream>
using namespace std;

// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
}
// 第二个命名空间
namespace second_space{
   void func(){
      cout << "Inside second_space" << endl;
   }
}
using namespace first_space;
int main ()
{
 
   // 调用第一个命名空间中的函数
   func();
   
   return 0;
}

Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:

Inside first_space

используя инструкции также могут быть использованы для определения пространства имен конкретных пунктов. Например, если вы только собираетесь использовать зЬй раздел пространства имен COUT, вы можете использовать следующее заявление:

using std::cout;

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

#include <iostream>
using std::cout;

int main ()
{
 
   cout << "std::endl is used with std!" << std::endl;
   
   return 0;
}

Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:

std::endl is used with std!

Имя спомощью инструкции , введенные следовать обычным правилам области видимости.Имена изиспользованием директивы изначально видимого до конца диапазона.В этом случае такое же имя вне рамки определения сущностей скрыта.

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

Пространство имен может быть определено в нескольких различных частей, так что пространство имен состоит из нескольких частей отдельно определенного состава. Различные компоненты пространства имен могут быть распределены по нескольким файлам.

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

namespace namespace_name {
   // 代码声明
}

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

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

namespace namespace_name1 {
   // 代码声明
   namespace namespace_name2 {
      // 代码声明
   }
}

Вы можете использовать оператор :: для доступа к вложенным членов пространства имен:

// 访问 namespace_name2 中的成员
using namespace namespace_name1::namespace_name2;

// 访问 namespace:name1 中的成员
using namespace namespace_name1;

В приведенном выше заявлении, если вы используете namespace_name1, то в пределах диапазона элементов namespace_name2 также доступны следующим образом:

#include <iostream>
using namespace std;

// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
   // 第二个命名空间
   namespace second_space{
      void func(){
         cout << "Inside second_space" << endl;
      }
   }
}
using namespace first_space::second_space;
int main ()
{
 
   // 调用第二个命名空间中的函数
   func();
   
   return 0;
}

Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:

Inside second_space