next up previous contents
Elõre: Mezõhozzáférés és öröklés Fel: Mezõhozzáférés Vissza: Mezõhozzáférés

Mezõhozzáférési szintek

Mint említettük, három különbözõ szinten érhetjük el egy osztály egyes mezõit. Most tekintsük át részletesen, mit is jelent e három szint.

A private-ként deklarált mezõket csak az ugyanabban az osztályban deklarált függvénymezõk érhetik el. A protected mezõket az ugyanabban az osztályban, és az adott osztályból származtatott további osztályokban definiált függvénymezõk érhetik el. A public mezõk korlátozás nélkül elérhetõk mindenhonnan, ahonnan az adott osztály is elérhetõ.

A struct-tal definiált osztályok mezõi alapértelmezés szerint mind publikusak (public elérésüek), így ahhoz, hogy az igazi egységbezárást megvalósíthassuk, a külvilág elõl elzárandó mezõket mi magunk kell, hogy a private kulcsszóval privátnak deklaráljuk (a private részt esetleg követõ újabb nyilvános részeket megint a public kulcsszóval kell megnyitnunk a külvilág számára). Minthogy egy jó C++ programozó mindent privátnak tekint és csak azt mondja meg külön, hogy mely mezõk publikusak, osztályok definiálására elõnyösebb a class-t használni a struct helyett, ugyanis egy class minden mezõje alapértelmezés szerint private. (Az egyetlen különbség a struct és a class között tehát a mezõhozzáférés alapértelmezésében van.) A point típust class-ként definiálva így célszerû a mezõhozzáférést a következõk szerint szabályozni:

 class point { // Alapertelmezes szerint privat:
                    int       x;
                    int       y;
                    colortype color;
               public:              // Publikus:
                    int       get_x(void) { return x; }
                    int       get_y(void) { return y; }                        
                  
                    colortype get_color(void);              
                    void      show(void); 
                    void      hide(void);                                      
          
                    point(int newx, int newy);
                    ~point(void);                                              
   
                  };
Nincs szükségünk tehát a private kulcsszóra az adatmezõk definiálásakor, ugyanakkor a függvénymezõket public-nak kell deklarálni, hogy létrehozhassunk point típusú objektumokat és hogy belõlük értékeket olvashassunk ki.