logo

Простір імен у C ++ | Встановіть 2 (розширення простору імен та безіменного простору імен)

Ми ввели простори імен нижче набору 1.
Простір імен у C ++ | Набір 1 (Вступ)

Визначення простору імен:



Визначення простору імен починається з простору імен ключових слів, а потім ім'ям простору імен:

простір імен імені_name 
{
// Декларації коду, тобто змінна (int a;)
метод (void add ();)
Класи (клас класу {};)
}

Слід зазначити, що після заключної дужки немає крапки з комою (;).
Щоб викликати версію з підтримкою простору або функції або змінної підготовки імені простору імен наступним чином:
імена імені_name :: код;  // Код може бути змінною функцією або класом.



Директива використання:

Ви також можете уникнути готовності простору імен за допомогою Директиви про простір імен. Ця директива повідомляє компілятору, що наступний код використовує імена у вказаному просторі імен. 
Таким чином, простір імен має на увазі наступний код:

C++
#include    using namespace std; // first name space namespace first_space {  void func()  {  cout << 'Inside first_space' << endl;  } } // second name space namespace second_space {  void func()  {  cout << 'Inside second_space' << endl;  } } using namespace first_space; int main () {  // This calls function from first name space.  func();  return 0; } 

Імена, введені в застосуванні Директиви, дотримуючись нормальних правил обсягу. Назва видно з точки використання Директиви до кінця області, в якій знайдена Директива. Суб'єкти з однойменною назвою, визначеними у зовнішньому обсязі, приховані.



Вкладені простори імен:

довго нанизувати

Простір імен можна вкладати там, де можна визначити один простір імен всередині іншого простору імені наступним чином:

SYNTAX: namespace namespace_name1 { // code declarations namespace namespace_name2 { // code declarations } }

Ви можете отримати доступ до членів вкладеного простору імен, використовуючи оператори роздільної здатності наступним чином:
// для доступу до членів імені_name2
Використання простору імен імені_name1 :: namespace_name2;
// для доступу до членів простору імен: name1
Використання простору імен імені_name1;


У наведених вище твердженнях, якщо ви використовуєте namesspace_name1, то це зробить елементи імені amespace_name2 в області наступним чином:

C++
#include    using namespace std; // first name space namespace first_space {  void func()  {  cout << 'Inside first_space' << endl;  }  // second name space  namespace second_space  {  void func()  {  cout << 'Inside second_space' << endl;  }  } } using namespace first_space::second_space; int main () {  // This calls function from second name space.  func();    return 0; } 


Також можна створити більше одного простору імен у глобальному просторі. Це можна зробити двома способами. 
 

    простори імен, що мають різні імена 
     
CPP
// A C++ program to show more than one namespaces  // with different names. #include    using namespace std; // first name space namespace first {  int func() { return 5; } } // second name space namespace second {  int func() { return 10; } } int main() {  // member function of namespace  // accessed using scope resolution operator  cout &lt;&lt; first::func() &lt;&lt;&quot;n&quot;;   cout &lt;&lt; second::func() &lt;&lt;&quot;n&quot;;   return 0; } 

  • Вихід: 
     
5 10
    Розширення просторів імен (використовуючи одноразове ім’я двічі) 
    Також можна створити два блоки простору імен, що мають однакове ім’я. Другий блок простору імен - це не що інше, як продовження першого простору імен. Простішими словами можна сказати, що обидва простори імен не відрізняються, але насправді однакові, які визначаються частинами. 
     
CPP
// C++ program to demonstrate namespace extension #include    using namespace std; // first name space namespace first  {   int val1 = 500;  } // rest part of the first namespace namespace first  {   int val2 = 501;  } int main() {  cout &lt;&lt; first::val1 &lt;&lt;&quot;n&quot;;   cout &lt;&lt; first::val2 &lt;&lt;&quot;n&quot;;   return 0; } 

  • Вихід: 
     
500 501


Безіменні простори імен  
 

  • Вони безпосередньо використовуються в одній програмі і використовуються для оголошення унікальних ідентифікаторів.
  • У безіменному просторі імен простору імен у не згадуваному в декларації простору імен.
  • Назва простору імен однозначно генерується компілятором.
  • Неназвані створені вами простори імен будуть доступні лише у файлі, в якому ви його створили.
  • Без назви простори імен є заміною статичної декларації змінних.


 

CPP
// C++ program to demonstrate working of unnamed  // namespaces #include    using namespace std; // unnamed namespace declaration namespace  {  int rel = 300;  } int main() {  cout &lt;&lt; rel &lt;&lt; &quot;n&quot;; // prints 300  return 0; } 

Вихід: 
 

300