Sınıfımızdaki değişken ve fonksiyonların görünürlülüğünü belirliyor. 3 türdür
- public: Bu etiketin altında kalanlar sınıf dışından erişilebilir.
- private: Bu etiketin altında kalanlar sadece sınıfın içinde erişilebilir.
- protected: Bu etiketin altında kalanlar sınıfın içinde ve miras alan sınıflarda erişilebilir. Fakat dışardan erişilemez.
Default olarak sınıfımızın etiketi private dır
#include <iostream>
using namespace std;
class MyClass {
int x, y;
};
int main() {
MyClass mc;
mc.x; // hata
}
x ve y private alanda olduğu için 10. satırdaki mc.x; ifadesi hata verecektir.
#include <iostream>
using namespace std;
class MyClass {
public:
int x{}, y{};
void acik_fonksiyon() {
cout << "acik" << endl;
gizlenen_fonksiyon();
}
private:
void gizlenen_fonksiyon() {
cout << "gizli" << endl;
}
};
int main() {
MyClass mc;
mc.x;
mc.acik_fonksiyon();
//mc.gizlenen_fonksiyon(); // hata
}
//acik
//gizliSınıfı kullanan kişilerin dışardan erişime ihtiyacı olan şeyleri public yapıyoruz. Dışardan müdahale olmamasını istediğimiz şeyleri private yapıyoruz.
- Etiketlerin sırası ve sayısı önemli değil. İsterseniz 10 kere farklı yerlerde private yazabilirsiniz, ya da public, ya da protected.
class MyClass {
public:
int x{}, y{};
private:
void gizlenen_fonksiyon() {
cout << "gizli" << endl;
}
public:
void acik_fonksiyon() {
cout << "acik" << endl;
gizlenen_fonksiyon();
}
};
class MyClass {
private:
void gizlenen_fonksiyon() {
cout << "gizli" << endl;
}
public:
int x{}, y{};
void acik_fonksiyon() {
cout << "acik" << endl;
gizlenen_fonksiyon();
}
};gibi
Sınıf ögelerine erişmek
Şuana kadar sınıfa ait değişken ve fonksiyonlara erişmek için . nokta operatörünü kullandık. Nokta operatörüne benzer şekilde -> arrow operatörümüz var. Aralarındaki tek fark arrow operatörü pointerlarla çalışıyor:
class Person {
public:
int age;
int ID;
};
int main() {
Person p1;
Person* p2;
p1.age = 22;
p2->age = 22;
}
Leave a Reply