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:
#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:
#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 << geek::rel << "n"; // 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 << rel << "n"; //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 << 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 << 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 << alias::var << '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.