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 using
anahtar 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: 10
Bu ö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: 20
namespace
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ı: 100
Last updated
Was this helpful?