logo

C++'da Ad Alanı | Set 3 (Erişim, başlık oluşturma, yerleştirme ve takma ad)

C++'da Ad Alanı | Set 1 (Giriş) C++'da Ad Alanı | Küme 2 (Ad alanını genişletme ve Adsız ad alanı)

Ad alanına erişmenin farklı yolları: C++'da ad alanı değişkenlerine ve işlevlerine erişmenin iki yolu vardır.



Bir Ad Alanının Tanımlanması:

Bir ad alanı tanımı, aşağıdaki gibi ad alanı anahtar sözcüğüyle ve ardından ad alanı adıyla başlar:

namespace  namespace_name   
{
// code declarations i.e. variable  (int a;)
method (void add();)
classes ( class student{};)
}

Kapanış parantezinden sonra noktalı virgül (;) bulunmadığına dikkat edilmelidir.
İşlev veya değişkenin ad alanı etkin sürümünü çağırmak için ad alanı adının başına şu şekilde ekleyin:
ad alanı_adı: :kod;  // kod değişken fonksiyon veya sınıf olabilir.



Kullanma direktifi:

sen bir eksin

Ayrıca, kullanma ad alanı yönergesiyle ad alanlarının başına eklenmesini de önleyebilirsiniz. Bu yönerge derleyiciye sonraki kodun belirtilen ad alanındaki adları kullandığını bildirir. 
Dolayısıyla ad alanı aşağıdaki kod için ima edilmiştir:

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

Bir kullanma yönergesinde tanıtılan adlar normal kapsam kurallarına uyar. Ad, kullanım yönergesinin bulunduğu noktadan, yönergenin bulunduğu kapsamın sonuna kadar görünür. Dış kapsamda tanımlanan aynı ada sahip varlıklar gizlenir.



İç İçe Ad Alanları:

Ad alanları, bir ad alanını başka bir ad alanı içinde aşağıdaki gibi tanımlayabileceğiniz şekilde iç içe yerleştirilebilir:

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

İç içe ad alanının üyelerine aşağıdaki gibi çözümleme işleçlerini kullanarak erişebilirsiniz:
// namespace_name2 üyelerine erişmek için
ad alanı kullanılıyor ad alanı_adı1::adalanı_adı2;
// ad alanı:isim1 üyelerine erişmek için
ad alanı kullanılarak ad alanı_adı1;


Yukarıdaki ifadelerde namespace_name1 kullanıyorsanız, namespace_name2 öğelerini aşağıdaki gibi kapsamda kullanılabilir hale getirecektir:

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

1. Normal yol  

CPP
// C++ program to demonstrate accessing of variables // in normal way i.e. using '::' #include    using namespace std; namespace geek {  int rel = 300;  } int main() {  // variable ‘rel’ accessed   // using scope resolution operator  cout &lt;&lt; geek::rel &lt;&lt; &quot;n&quot;; // prints 300  return 0; } 

Çıkış:

300  

2. 'kullanma' direktifi  

CPP
// C++ program to demonstrate accessing of variables // in normal way i.e. using 'using' directive #include    using namespace std; namespace geek {  int rel = 300;  } // use of ‘using’ directive using namespace geek; int main() {  // variable ‘rel’ accessed   // without using scope resolution variable  cout &lt;&lt; rel &lt;&lt; &quot;n&quot;; //prints 300    return 0; } 

Çıkış:

turbo c++ indir
300  

Başlık dosyalarında ad alanını kullanma Bir dosyada ad alanı oluşturabilir ve içeriğe başka bir program kullanarak erişebiliriz. Bu aşağıdaki şekilde yapılır.

  • İki dosya oluşturmamız gerekiyor. Ad alanını ve daha sonra kullanmak istediğimiz tüm veri üyelerini ve üye işlevlerini içeren bir alan.
  • Ve diğer program, içindeki tüm veri üyelerini ve üye fonksiyonlarını kullanmak için doğrudan ilk programı çağırabilir.

Dosya 1  

CPP
// file1.h  namespace foo {  int value()   {   return 5;   } } 

Dosya 2  

CPP
// file2.cpp - Not to be executed online #include    #include file1.h // Including file1 using namespace std; int main ()  {  cout &lt;&lt; foo::value();  return 0; } 

Burada ad alanının dosya1.h'de oluşturulduğunu ve bu ad alanının değerinin() dosya2.cpp'de çağrıldığını görebiliriz. İç İçe Ad Alanları C++'da ad alanları da iç içe yerleştirilebilir, yani bir ad alanı diğerinin içine yerleştirilebilir. Ad alanı değişkenlerinin çözünürlüğü hiyerarşiktir. 

CPP
// C++ program to demonstrate nesting of namespaces #include    using namespace std; // Nested namespace namespace out {  int val = 5;   namespace in  {  int val2 = val;   } } // Driver code int main() {  cout &lt;&lt; out::in::val2; // prints 5  return 0; } 

ÇIKTI:

5  

Ad Alanı Takma Adlandırma: C++'da kullanım kolaylığı sağlamak amacıyla ad alanı adınız için bir takma ad kullanabilirsiniz. Mevcut ad alanlarına aşağıdaki söz dizimi kullanılarak yeni adlar verilebilir:

namespace new_name = current_name;  
CPP
#include    namespace name1  {  namespace name2   {  namespace name3   {  int var = 42;  }  } } // Aliasing  namespace alias = name1::name2::name3;   int main() {  std::cout &lt;&lt; alias::var &lt;&lt; 'n'; } 

Çıkış:

42  

GeeksforGeeks'i beğendiyseniz ve katkıda bulunmak istiyorsanız, kullanarak bir makale de yazabilirsiniz. write.geeksforgeeks.org veya makalenizi [email protected] adresine gönderin. Makalenizin GeeksforGeeks ana sayfasında görünmesini sağlayın ve diğer Geek'lere yardımcı olun.