logo

Namespace C ++ | 2. komplekts (pagarinot nosaukumvietu un nenosauktu Namespace)

Mēs esam ieviesuši nosaukumvietas zemāk 1. komplektā.
Namespace C ++ | 1. komplekts (ievads)

Nosaukumvietas definēšana:



Kylie Jenner brāļi un māsas

Namespace definīcija sākas ar atslēgvārdu nosaukumvietu, kam seko nosaukumvietas nosaukums šādi:

namespace namespace_name 
{
// koda deklarācijas, t.i., mainīgais (int a;)
metode (void pievienot ();)
klases (klases students {};)
}

Jāatzīmē, ka pēc noslēguma stiprinājuma nav semikola (;).
Lai izsauktu funkcijas vai mainīgā versiju, kas iespējota ar nosaukumvietu, sagatavojiet nosaukumvietas vārdu šādi:
namespace_name :: Code;  // kods varētu būt mainīga funkcija vai klase.



LIETOŠANAS DIREKTĪVA:

java regex priekš

Varat arī izvairīties no nosaukumvietas sagatavošanas ar lietošanas nosaukuma direktīvu. Šī direktīva norāda kompilatoram, ka nākamais kods izmanto nosaukumus norādītajā nosaukumvietā. 
Tādējādi nosaukumvieta tiek domāta šādam kodam:

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; } 

Vārdi, kas ieviesti lietošanas direktīvā, ievērojiet normālos darbības jomas noteikumus. Nosaukums ir redzams no lietošanas direktīvas punkta līdz tā darbības jomas beigām, kurā tiek atrasta direktīva. Entītijas ar tādu pašu nosaukumu, kas definēts ārējā tvērumā, ir paslēptas.



Ligzdotas namespaces:

Namespaces var ligzdot, kur jūs varat definēt vienu nosaukumvietu cita vārda telpā šādi:

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

Jūs varat piekļūt ligzdotās nosaukumvietas locekļiem, izmantojot izšķirtspējas operatorus šādi:
// Lai piekļūtu namespace_name2 dalībniekiem
izmantojot namespace namespace_name1 :: namespace_name2;
// Lai piekļūtu Namespace dalībniekiem: Name1
izmantojot namespace namespace_name1;


Iepriekš minētajos paziņojumos, ja izmantojat namespace_name1, tad tas padarīs namespace_name2 elementus pieejamus šādi:

c++ prototipa funkcija
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; } 


Ir iespējams arī izveidot vairāk nekā vienu nosaukumvietu globālajā telpā. To var izdarīt divējādi. 
 

    Namespaces ar dažādiem nosaukumiem 
     
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; } 

  • Izlaide: 
     
5 10
    Paplašinot nosaukumvietas (divreiz izmantojot to pašu vārdu) 
    Ir arī iespējams izveidot divus nosaukumvietas blokus, kuriem ir tāds pats nosaukums. Otrais nosaukumvietas bloks ir nekas cits kā pirmās nosaukumvietas turpinājums. Vienkāršākiem vārdiem sakot, mēs varam teikt, ka abas nosaukumvietas neatšķiras, bet patiesībā tās pašas, kas tiek definētas daļās. 
     
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; } 

  • Izlaide: 
     
500 501


Nenosauktas nosaukumvietas  
 

  • Tie ir tieši izmantojami tajā pašā programmā un tiek izmantoti unikālu identifikatoru deklarēšanai.
  • Nenosauktajā nosaukumvietas nosaukumā Namespace nav minēts Namespace deklarācijā.
  • Namespace nosaukumu unikāli ģenerē kompilators.
  • Jūsu izveidotās nenosauktās nosaukumvietas būs pieejamas tikai jūsu izveidotajā failā.
  • Nenosauktas nosaukumvietas ir mainīgo statiskās deklarācijas aizstāšana.


 

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; } 

Izlaide: 
 

java regulārajā izteiksmē
300