namespaces c
Basit Örneklerle C ++ 'da Ad Alanlarına Tam Bir Genel Bakış.
mac'ta bir dat dosyası açmak
Şimdiye kadar önceki eğitimlerimizde değişkenler, bildirimler, işlevler ve C ++ 'da kullanılan diğer bu tür varlıklar hakkında her şeyi gördük.
C ++ 'da uygulamalar geliştirirken, aynı değişken adlarının iki kez kullanılması veya aynı prototiplerle tanımlanan işlevler vb. Gibi bazı özel durumlar ortaya çıkabilir. Bu senaryolar ortaya çıktığında, derleyicinin belirsizliğe yol açan doğru değişkeni veya işlev çağrısını çıkarması zorlaşır. .
=> Mükemmel C ++ Eğitim Kılavuzuna Buradan Bakabilirsiniz.
Ne öğreneceksin:
- Ad Alanı Nedir?
- Bir Ad Alanı Tanımlama
- Ad Alanı Üyelerine Erişim
- Kullanım Direktifi
- İç içe geçmiş ad alanları
- Harici Ad Alanları
- Bitişik Ad Alanları
- Sonuç
- Önerilen Kaynaklar
Ad Alanı Nedir?
Aşağıdaki Örneğe bakalım:
#include #include int main() { int var; double var; std::cin>>var; }
Çıktı:
'İnt main ()' işlevinde:
8:10: hata: çelişen 'çift değişken' bildirimi
7: 7: not: 'int var' olarak önceki bildirim
Yukarıdaki örnekte, farklı türlere sahip ancak aynı tanımlayıcıya sahip iki değişken tanımladık. Yani bu örneği derlediğimizde, Çıktı penceresinde gösterildiği gibi bir hata alıyoruz. Bu çelişkili bildirimler, iki değişkeni adlandırmak için kullanılan aynı tanımlayıcı nedeniyle ortaya çıkar.
Bu tür durumlar, uygulamalarda belirsizliğe yol açar.
C ++, ' ad alanları Bu sorunu çözmek için. C ++ 'daki ad alanı, aynı tanımlayıcılara sahip değişken veya işlevler arasında ayrım yapmak için kullanılan bir paket veya bölge veya kitaplık gibidir.
Bir ad alanı değişkenler, işlevler, sınıflar veya diğer nesneleri ve hatta başka bir ad alanını içerebilir. Ad alanının her üyesi, bir ad alanı kullanılarak başvurulabilir. Bu, derleyicinin aynı adlara sahip olsalar bile çeşitli programlama varlıkları arasında ayrım yapmasına yardımcı olur.
Bir Ad Alanı Tanımlama
C ++ 'da, '' anahtar kelimesini kullanarak bir ad alanı tanımlayabiliriz. ad alanı ' Aşağıda gösterildiği gibi:
namespace namespace_name{ namespace_declarations; }
Yani 'test_space' adlı bir ad alanı tanımlamamız gerekirse, bunu aşağıdaki gibi yapabiliriz:
namespace test_space{ int var=10; }
Yukarıdaki bildirim, 'test_space' adlı bir ad alanını tanımlar. Gösterildiği gibi, üyesi olarak bir tamsayı değişkenine sahiptir.
Ad Alanı Üyelerine Erişim
Şimdi, kendi ad alanımızı “test_space” tanımladık ve bu ad alanının içeriğine nasıl erişeceğiz?
C ++ programında, sözdizimini kullanarak ad alanı üyelerine erişebiliriz:
namespace_name::namespace_member;
Dolayısıyla, yukarıdaki 'test_space' ad alanında tanımlanan var tamsayı değişkenine aşağıdaki gibi erişilebilir:
test_space::var;
Ad alanlarını ve kullanımını göstermek için aşağıdaki tam Örneğe bakın.
#include #include namespace test_space{ int var = 10; } int main() { double var = 20.53; std::cout<<'local var = '< Çıktı:
yerel var = 20.53
test_space :: var = 10
Yukarıdaki programlama örneğinde ad alanı oluşturma ve bunlara erişim hakkında her şeyi gösterdik. Gördüğümüz gibi, 'test_space' tanımladığımız bir ad alanıdır. İçinde tanımlanmış tek bir tamsayı değişken değişkenine sahiptir. Daha sonra ana fonksiyonda, başlatılan başka bir çift değişkenli var var.
Daha sonra bu iki değişkeni de görüntüleyeceğiz. Main içindeki yerel çift değişken doğrudan yazdırılabilirken, ad alanı değişkenini yazdırmak için, ondan önce ad alanı adı koymamız gerektiğine dikkat edin.
Bu, daha önce tartıştığımız aynı isimler nedeniyle değişkenler arasındaki çatışma sorununu da halletmiştir.
Kullanım Direktifi
Önceki konumuzda, namespace_name :: namespace_member kullanarak ad alanı üyelerine erişebildiğimizi gördük.
Programın her yerinde bir ad alanı adı belirtmek istemiyorsak, ' kullanma Programa ad alanını dahil etme yönergesi.
Bu şu şekilde yapılır:
#include #include namespace test_space{ int var = 10; } using namespace std; using namespace test_space; int main() { double var = 20.53; cout<<'local var = '< Çıktı:
yerel var = 20.53
test_space :: var = 10
Yukarıdaki örnekte, “test_space” ad alanını tanımladıktan sonra iki ifade kullandık.
Bunlar:
sql ve sql server arasındaki fark
using namespace std; using namespace test_space;
İlk ifade, C ++ kitaplığında önceden tanımlanmış bir standart ad alanı olan 'std' ad alanına erişmek için bildirimi kullanır. Bu ad alanı cin, cout vb. Gibi çeşitli işlevlere erişmek için kullanılır.
İkinci ifade, programa 'test_space' ad alanını dahil etmek için kullanılır.
Ana işlevde, cout ve değişken var gibi işlevlerin önünde bir ad alanı adı olması gerekmediğini görebiliriz. Doğrudan onlara başvurabiliriz. Ancak var, ana işlevde yerel bir değişkenle bir ad çatışmasına sahip olduğundan, ad alanlarının her zaman genel bir kapsamı olduğu için kapsam çözümleme operatörünü (: :) kullanarak başvururuz.
İç içe geçmiş ad alanları
C ++ ayrıca iç içe geçmiş ad alanlarına, yani başka bir ad alanı içinde tanımlanmış bir ad alanına sahip olmaya da izin verir.
İç içe geçmiş ad alanlarının genel sözdizimi aşağıdaki gibidir:
namespace ns1{ ns1_code; namespace ns2{ ns2_code; } }
Ns2_code'a erişmemiz gerekirse, aşağıdaki şekilde erişebiliriz:
ns1::ns2::ns2_code;
Aşağıdaki kod Örneğini kullanarak Yuvalanmış Ad Alanlarını gösterelim.
#include #include namespace first{ int var = 10; namespace second{ int secVar = 20; } } using namespace std; using namespace first; using namespace first::second; int main() { double var = 20.53; cout<<'local var = '< Çıktı:
yerel var = 20.53
ilk :: var = 10
saniye :: var = 20
Yukarıdaki programda iç içe geçmiş ad alanları kullandık. Lütfen isim alanlarına erişim için yönergenin nasıl kullanıldığına dikkat edin. Yalnızca en içteki ad alanına bir kez başvurmak yeterli değildir. En dıştaki ad alanından bir koda ihtiyacımız varsa, ona ayrıca başvurmamız gerekir.
'Takma ad' olarak bilinen ad alanları için başka bir ad kullanabiliriz. Bu, özellikle iç içe geçmiş ad alanları kullanılırken kullanışlıdır ve iç içe geçme derecesi yüksektir.
Yukarıdaki Örneği değiştirerek bir ad alanı için takma adı gösterebiliriz.
#include #include namespace first{ int var = 10; namespace second{ int secVar = 20; } } using namespace std; using namespace first; namespace nested = first::second; int main() { double var = 20.53; cout<<'local var = '< Çıktı:
yerel var = 20.53
ilk :: var = 10
saniye :: var = 20
First :: second ad alanı için tanımlanmış olan takma adı not edin. Bir takma ad tanımlandıktan sonra, bir takma ad kullanarak ad alanına başvurabiliriz.
Harici Ad Alanları
Bazen uygulamamızda kullanabileceğimiz çok fazla ad alanımız olduğunda, tüm ad alanlarını ayrı bir dosyaya yerleştirmek isteyebiliriz. Bu kolaylıkla yapılabilir. Ad alanları ayrı bir dosyadayken, sadece o dosyayı programımıza dahil ederiz ve ardından ad alanlarını ve içeriğini programımızda doğrudan kullanırız.
ÖrneğinAşağıdaki isim alanını içeren ns.h adında bir dosyamız varsa.
//ns.h namespace first{ int var = 25; }
Artık programımızda, 'ilk' ad alanını aşağıdaki gibi kullanabiliriz:
#include #include “ns.h” using namespace std; int main() { cout<Ad alanlarını içeren dosyayı programımıza dahil ettiğimizde, ad alanlarını aynı programda global olarak bildirilmiş gibi kullanabiliriz.
Bitişik Ad Alanları
C ++ ayrıca bitişik ad alanları olarak adlandırılan bir şeyi tanımlamamıza izin verir. Bitişik ad alanları, aynı ada sahip olarak birden çok kez tanımlanan ad alanlarıdır. Gerçekte, bunlar ayrı ad alanları değil, aynı ad alanının uzantılarıdır.
Bitişik ad alanları aşağıdaki Örnekte belirgindir.
#include #include . namespace first{ int var = 10; } namespace first{ namespace second{ int secVar = 20; } } using namespace std; using namespace first; namespace nested = first::second; int main() { double var = 20.53; cout<<'local var = '< Çıktı:
yerel var = 20.53
chrome için en iyi pop-up engelleyici nedir
ilk :: var = 10
saniye :: var = 20
Yukarıdaki örnekte, aynı ad alanını iki kez tanımladığımıza dikkat edin. İlk tanımda var adında bir değişkenimiz var. İkinci bildirimde, tanımlanmış başka bir ad alanımız var.
Ana işlevde, iç ve dış ad alanının üyelerine eriştik ve üyelere kolayca erişilebildiğini not ettik.
Bu, bazen 'süreksiz ad alanları' olarak da bilinen bitişik ad alanları örneğidir. Tanımları ayrı görünür, ancak gerçekte sürekli ad alanlarıdır.
Sonuç
Bununla, C ++ 'daki ad alanları üzerine bu öğreticinin sonuna geldik. Ad alanları, kodumuzu farklı alanlarda veya bölgelerde ayırmamıza izin veren bir şekilde okurken ve ayrıca üyelerini kullanırken netlik elde etmemizi sağlar.
Sonraki eğitimlerimizde, istisna işleme, dosya girişi / çıkışı vb. Gibi çeşitli temel C ++ konuları hakkında daha fazla bilgi edineceğiz.
=> Burada C ++ Eğitim Öğreticilerinin A-Z'sini Görmek İçin Burayı Kontrol Edin.
Önerilen Kaynaklar
- En İyi ÜCRETSİZ C # Eğitim Serisi: Yeni Başlayanlar İçin En İyi C # Rehberi
- HP LoadRunner Öğreticileriyle Yük Testi
- C ++ 'da Kitaplık İşlevleri
- ÜCRETSİZ C ++ Programlamayı Öğrenmek İçin 70+ EN İYİ C ++ Öğreticisi
- C ++ 'da Nesne Tabanlı Programlama
- C ++ 'da Başlatıcı Listeleri
- STL'de Yineleyiciler
- C ++ 'da Kapsülleme