Namespace Kullanımı: İsim Çakışmalarını Önleme (std:: Nedir?)

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

Namespace: Kodunuzu Mantıksal Gruplara Ayırın​


Namespace'leri birer "soyadı" veya "dosya klasörü" gibi düşünebilirsiniz. Aynı isimdeki iki kişi, soyadları (namespace) farklı olduğu sürece birbirine karıştırılmaz.



1. std:: Nedir ve Neden Her Yerde Var?​


std, C++ Standart Kütüphanesinin (Standard Library) kısaltmasıdır. C++ ile gelen tüm hazır araçlar (cout, vector, string, sort vb.) std isim uzayının içinde tanımlanmıştır.

Bir aracı kullanmak istediğinizde, onun hangi uzaya ait olduğunu :: (Scope Resolution Operator - Kapsam Çözünürlük Operatörü) ile belirtmeniz gerekir:

C++:
std::cout << "Merhaba Dünya"; // std uzayındaki cout'u kullan.



2. Kendi Namespace'inizi Oluşturma​


Kendi kodlarınızı korumak için basitçe namespace anahtar kelimesini kullanabilirsiniz:

C++:
namespace VeriTabani {
void baglan() {
std::cout << "Veritabanina baglanildi." << std::endl;
}
}

namespace OyunMotoru {
void baglan() {
std::cout << "Sunucuya baglanildi." << std::endl;
}
}

int main() {
VeriTabani::baglan(); // Belirsizlik yok
OyunMotoru::baglan(); // Hangi 'baglan' oldugu net
}



3. using namespace std; Kullanımı (Tehlikeli mi?)​


Yeni başlayanlar genellikle her seferinde std:: yazmamak için kodun başına using namespace std; ekler. Bu, o uzaydaki her şeyi "yerel" hale getirir.

Avantajı: Daha hızlı kod yazımı, temiz görünüm.

Dezavantajı: İleride projenize başka bir kütüphane eklediğinizde isim çakışması riski. Örneğin, kendi yazdığınız bir count fonksiyonu ile std::count çakışabilir.

Profesyonel İpucu: Büyük projelerde ve .h (başlık) dosyalarında asla using namespace kullanmayın. Bunun yerine sadece ihtiyacınız olanı çekin: using std::cout;



4. Namespace'lerin Diğer Özellikleri​



  • []İç İçe Namespace (Nested): namespace Kurumsal::Muhasebe { ... } şeklinde hiyerarşik yapılar kurabilirsiniz.
    []Namespace Alias (Takma Ad): Uzun isimleri kısaltabilirsiniz:
    C++:
    namespace nm = Kurumsal::Muhasebe::VergiHesaplama;
  • Anonim Namespace: İsmi olmayan bir namespace içindeki değişkenler sadece o dosya içinde (private gibi) geçerlidir.



Sonuç​


Namespace kullanımı, kodunuzun profesyonelliğini ve taşınabilirliğini belirler. Kendi kütüphanelerinizi yazarken mutlaka bir namespace içine hapsedin; böylece kodunuzu kullanan diğer yazılımcılara "isim çakışması" kabusu yaşatmazsınız.
 
Geri
Üst