C++ | Namespace ( İsim Alanları)

Namespace’ler isim çakışmalarını engellemek için kullanılır. Bu sayede isim alanları ile değişkenleri farklı bir scope alanına taşımış oluyoruz. Bu özellik C’de bulunmamaktadır.

using namespace std;

namespace isimAlani1{
    int func(int sayi)
    {
        return sayi;        
    }
}

namespace isimAlani2{
    int func(int sayi)
    {
        return sayi;        
    }
}

int main()
{
    cout << func(5);// use of undeclared identifier 'func' hatası verir


    return 0;
}

Peki isim alanlarına erişimi nasıl yapacağız ?
Bunun için scope operatörü(::) kullanılır. Bu operatör ile yerel bir scopeta iken global scope’taki bir değişkene erişim de mümkündür. Bunun için değişkenin önüne scope operatörü konulur. Örneğin;

Peki bir isim alanındaki nesnelere erişimi nasıl yapacağız ?

Using bildirimi: Bu bildirim ile bir dosyanın scope’unu global scope’a taşıyabiliriz. Bu bildirim ile bütün bir namespace’i global alana taşıyabileceğimiz gibi bir veya namespace’teki tek bir değişkeni veya fonksiyonu da global alana taşımamız mümkündür.