Aşağıdaki set 1'de ad alanlarını tanıttık.
C++'da Ad Alanı | Set 1 (Giriş)
Bir Ad Alanının Tanımlanması:
a-b budama
Bir ad alanı tanımı, aşağıdaki gibi ad alanı anahtar sözcüğüyle ve ardından ad alanı adıyla başlar:
ad alanı namespace_name
{
// kod bildirimleri, yani değişken (int a;)
yöntem (geçersiz ekleme();)
sınıflar ( sınıf öğrencisi{};)
}
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:
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:
#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:
SYNTAX: 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:
#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; }
Global alanda birden fazla ad alanı oluşturmak da mümkündür. Bu iki şekilde yapılabilir.
-
Çıkış:
-
Çıkış:
- Aynı programda doğrudan kullanılabilirler ve benzersiz tanımlayıcıları bildirmek için kullanılırlar.
- Adsız ad alanlarında, ad alanı bildiriminde ad alanının adı belirtilmemiştir.
- Ad alanının adı derleyici tarafından benzersiz bir şekilde oluşturulur.
- Oluşturduğunuz adsız ad alanlarına yalnızca onu oluşturduğunuz dosyadan erişilebilir.
- Adsız ad alanları, değişkenlerin statik bildiriminin yerine geçer.
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 << first::func() <<"n"; cout << second::func() <<"n"; return 0; }
5 10
Aynı ada sahip iki ad alanı bloğu oluşturmak da mümkündür. İkinci ad alanı bloğu aslında ilk ad alanının devamından başka bir şey değildir. Daha basit bir deyişle, parçalar halinde tanımlanan her iki ad alanının da farklı olmadığını, aslında aynı olduğunu söyleyebiliriz.
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 << first::val1 <<"n"; cout << first::val2 <<"n"; return 0; }
500 501
Adsız Ad Alanları
// C++ program to demonstrate working of unnamed // namespaces #include using namespace std; // unnamed namespace declaration namespace { int rel = 300; } int main() { cout << rel << "n"; // prints 300 return 0; }
Çıkış:
300