logo

имена у Ц ++ | Сет 2 (продужење простора имена и неименованог именовања имена)

Уведели смо просторе за именовање испод Сет 1.
Имена у Ц ++ | Сет 1 (Увод)

путовање али

Дефинисање имена:



Дефиниција простора за именовање почиње кључним речима имена које је праћено именовањем имена имена на следећи начин:

иМеспаце намеспаце_наме 
{
// цоде декларације И.Е. променљива (инт а;)
метода (неважећи додатак ();)
часови (класа студент {};)
}

Треба напоменути да нема зарезака (;) након затварања Браце.
Да бисте позвали верзију Омогућене именовањем или променљиве варијабле препуни имена простора за именовање на следећи начин:
намеспаце_наме :: код;  // код може бити променљива функција или класа.



Коришћење Директиве:

Такође можете да избегнете предувете просторе за именовање помоћу Директиве о именовању имена. Ова директива говори преводиоцу да наредни кодекс користи имена у наведеном простору имена. 
Именовање се на тај начин подразумева за следећи код:

уклоните први знак у Екцел-у
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 } }

Чланове угнијежђеног имена можете приступити коришћењем оператора резолуције на следећи начин:
// да приступи члановима намесника_наме2
Коришћење иМеСпаце имеСеспаце_Наме1 :: НамеСпаце_Наме2;
// Приступите члановима имена имена: Име1
користећи имеСпаце намеспаце_наме1;


У горе наведеним изјавама ако користите НамеСпаце_Наме1, тада ће направити елементе намеспаце_наме2 доступне у опсегу на следећи начин:

нбсп
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