Menü Kapat

Sınıf Kapsam Alanı

Kapsam

Bir değişkenin etki edebildiği alandır.

Örnek
int x=5;
cout << "x: " << x << endl;
if(1){
    x=6;
    cout << "icerde x: " << x << endl;
}
cout << "disarda x: " << x << endl;

Çıktı:

x: 5
icerde x: 6
disarda x: 6

İçerde aynı isim ve türde bir değişken tanımlasaydı dışardaki ve içerdeki farklı isim olarak aynı olsa da aslında farklı olacaktı. Eğer o değişken ile işlem yapılmak istenseydi en son tanımlanan üzerinde işlem yapılacaktı:

Örnek
int x=5;
cout << "x: " << x << endl;
if(1){
    int x=6;
    cout << "icerde x: " << x << endl;
}
cout << "disarda x: " << x << endl;

Çıktı:

x: 5
icerde x: 6
disarda x: 5
Örnek
#include <iostream>
using namespace std;

int x=7; //global x

int main()
{
    int x=5;
    cout << "x: " << x << endl;
    cout << "global x(::x): " << ::x << endl;
    if(1){
        int x=6;
        cout << "icerde x: " << x << endl;
        cout << "icerde global x(::x): " << ::x << endl;
    }
    cout << "disarda x: " << x << endl;
    return 0;
}

Çıktı:

x: 5
global x(::x): 7
icerde x: 6
icerde global x(::x): 7
disarda x: 5

Globale erişmek için “::” kullanıldı.

Sınıf Kapsam Alanı

Bir sınıfta, tüm üye değişkenler ve fonksiyonlar sınıfın fonksiyonları tarafından kullanılabilmektedir. Erişim belirleyiciler ancak sınıfın dışında işlev görür. Sınıfın içerisindeki bir nesneye (.) veya (→) operatörleri ile erişilmektedir.

Örnek:

#include <iostream>
using namespace std;
class Insan
{
private:
    string isim;
    string soyIsim;
    int yas;
public:
    Insan();
    Insan(string Isim,string SoyIsim){
        isim=Isim;
        soyIsim=SoyIsim;
    };
    Insan(string isim,string soyIsim, int yas);
    ~Insan();
    void setIsim(string isim);
    string GetIsim(){
        return isim;
    };
    string GetSoyIsim();
    void SetYas(int yas);
    int GetYas();
    void MerhabaDe();
};
int main()
{
    Insan *insan1=new Insan("Nursena","Boluk");
    cout<<"Isim: "<<insan1->GetIsim() <<endl;
}
 

İsim Uzayı(Namespace)

İsim çakışmalarının önlenmesi amacıyla kullanılmaktadır.

Genel Kullanımı:

namespace namespaceAdi
{
     /*sınıflar
     * fonksiyonlar
     * değişkenler
     */
}

Namespace içindeki sınıf, fonksiyon veya değişkene ulaşmak için:

namespace_adı::class_adı
namespace_adı::fonksiyon_adı
namespace_adı::değişken_adı

C++ standart kütüphanesine ait tüm üyeler std ad uzayında bulunmaktadır.

using namespace std; // Ad uzayinin tamamini kullanmaiza izin verir.
using std::bir_üye // bir_üye'nin programın her yerinde kullanılmasını sağlar.
std::bir_üye // bir_üye'ye bir kereligine erismenizi saglar.

İsim uzaylarının içerisindeki herhangi bir nesneye erişmek için kapsam çözünürlük operatörü kullanılmaktadır.

İç İçe İsim Uzayları

namespace foo
{
    namespace goo
    {
        int x;
        //stuff
    }
}

Aynı tanımlama şöyle de yapılabilir. (C++ 17)

namespace foo::goo
{
    int x;
}

Bir yorum yazınız. Yorumlarınız bizim için değerlidir.