1.6 Namespace
C++ dilinde namespace (ad alanı) anahtar kelimesi, kodunuzu mantıksal gruplara ayırmak ve isim çakışmalarını önlemek için kullanılır. Özellikle büyük projelerde, farklı kütüphaneler veya modüller tarafından tanımlanan aynı isimlerin (örneğin, sınıf, fonksiyon veya değişken isimleri) çakışmaması için namespace kullanımı önemlidir.
Bir namespace tanımlamak için aşağıdaki sözdizimini kullanabilirsiniz:
namespace ad_alanı_adı {
// Burada tanımlanan her şey bu ad alanına ait olur.
int x = 10;
void yazdir() {
std::cout << "x: " << x << std::endl;
}
}Bu örnekte ad_alanı_adı adında bir namespace tanımladık ve içine bir değişken (x) ve bir fonksiyon (yazdir()) koyduk.
Tanımlanan bir namespace içindeki elemanlara erişmek için namespace adını kullanmanız gerekir:
#include <iostream>
namespace ornek {
int x = 100;
void yazdir() {
std::cout << "Namespace içindeki x: " << x << std::endl;
}
}
int main() {
ornek::yazdir(); // Namespace içindeki fonksiyona erişim
std::cout << "Namespace içindeki x: " << ornek::x << std::endl; // Namespace içindeki değişkene erişim
return 0;
}using Anahtar Kelimesi
using Anahtar KelimesiBir namespace içindeki elemanları kullanırken her seferinde namespace adını yazmak zorunda kalmamak için usinganahtar kelimesini kullanabilirsiniz:
#include <iostream>
namespace ornek {
int x = 100;
void yazdir() {
std::cout << "Namespace içindeki x: " << x << std::endl;
}
}
int main() {
using namespace ornek; // ornek namespace içindeki tüm elemanları kullanıma aç
yazdir(); // ornek::yazdir() olarak kullanılabilir
std::cout << "Namespace içindeki x: " << x << std::endl; // ornek::x olarak kullanılabilir
return 0;
}Bu örnekte using namespace ornek; ifadesi, ornek ad alanındaki tüm elemanları main fonksiyonunda kullanılabilir hale getirir.
Ad Alanları ile İsim Çakışmalarını Önleme
Farklı namespace içinde aynı isimde değişken veya fonksiyonlar tanımlanabilir ve bunlar birbirinden bağımsız çalışır. Örneğin:
#include <iostream>
namespace birinciAlan {
int x = 5;
}
namespace ikinciAlan {
int x = 10;
}
int main() {
std::cout << "birinciAlan içindeki x: " << birinciAlan::x << std::endl;
std::cout << "ikinciAlan içindeki x: " << ikinciAlan::x << std::endl;
return 0;
}Çıktı:
birinciAlan içindeki x: 5
ikinciAlan içindeki x: 10Bu örnekte, birinciAlan ve ikinciAlan ad alanlarında aynı isimde (x) değişkenler tanımlanmış olsa da, isim çakışması oluşmaz ve her iki namespace'deki x değişkeni bağımsız olarak kullanılır.
İç İçe namespace Tanımlama
namespace Tanımlamanamespace içinde başka bir namespace tanımlayabilirsiniz. Bu, daha karmaşık ve detaylı isimlendirme sistemleri kurmak için kullanışlıdır:
#include <iostream>
namespace birinciAlan {
namespace ikinciAlan {
int x = 20;
void yazdir() {
std::cout << "İç içe namespace içindeki x: " << x << std::endl;
}
}
}
int main() {
birinciAlan::ikinciAlan::yazdir();
std::cout << "İç içe namespace içindeki x: " << birinciAlan::ikinciAlan::x << std::endl;
return 0;
}Çıktı:
İç içe namespace içindeki x: 20
İç içe namespace içindeki x: 20namespace Alias (Takma Ad)
namespace Alias (Takma Ad)namespace adlarını kısaltmak için takma adlar kullanabilirsiniz:
#include <iostream>
namespace birinciAlan {
int x = 100;
}
namespace kisaAd = birinciAlan; // birinciAlan için kisaAd takma adını kullan
int main() {
std::cout << "Takma ad kullanımı: " << kisaAd::x << std::endl; // kisaAd ile birinciAlan içindeki x'e erişim
return 0;
}Çıktı:
Takma ad kullanımı: 100Last updated
Was this helpful?