Sınıf Kapsam Alanı
Kapsam
Bir değişkenin etki edebildiği alandır.
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ı:
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
#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; }