Hozzáférés a módosítókhoz C++ nyelven
A hozzáférés-módosítók egy osztály adatainak elérhetőségének és láthatóságának kezelésére szolgálnak. Bizonyos korlátozásokat szabnak az adattagokra, hogy a külső funkciók ne férhessenek hozzájuk. A hozzáférés-módosítók háromféle típusúak a C++-ban:
Nyilvános hozzáférés módosító C++ nyelven
A public kulcsszó alatt deklarált osztály összes tagja elérhető lesz az osztályon kívüli összes függvény számára a programon belül. A közvetlen tag hozzáférési operátor (.), más néven pont operátor használható az adott osztály objektumával ezekhez az adattagokhoz.
Példa
A nyilvános hozzáférés módosító egy osztály deklarálására szolgál, adattagjait pedig a programon belüli többi funkció éri el.
#include
#include
#include
névtér std használatával ;
osztályú háromszög
{
nyilvános :
úszó x , és , Val vel ;
üres bemenet ( )
{
cout << 'Írja be a háromszög x oldalát:-' ;
enni >> x ;
cout << 'Írja be a háromszög y oldalát:-' ;
enni >> és ;
cout << 'Írja be egy háromszög z oldalát:-' ;
enni >> Val vel ;
}
üres Terület ( )
{
úszó s = ( x + és + Val vel ) / 2 ;
úszó terület = sqrt ( s * ( s - x ) * ( s - és ) * ( s - Val vel ) ) ;
cout << ' \n A háromszög területe = << terület ;
}
} ;
int fő- ( )
{
t1 háromszög ;
t1. bemenet ( ) ;
t1. Terület ( ) ;
Visszatérés 0 ;
}
A háromszög osztályként van definiálva, paraméterei pedig a nyilvános kulcsszó alatt találhatók. Ezután a háromszög területe ezen az osztályon kívül kerül kiszámításra a nyilvános módosító adattagjainak elérésével.
A háromszög három oldalát a felhasználó adja meg, és a háromszög területét az osztályon kívüli értékek elérésével számítja ki a szabványos képlet segítségével, amely 13,4164.
Privát hozzáférés módosító C++ nyelven
A private kulcsszó alatt deklarált osztály összes tagja nem lesz elérhető az osztályon kívüli függvények számára a programban. Ezeket a privát tagokat csak az azonos osztályon belüli közvetlen tagok olvashatják. Azonban a baráti függvények és osztályok is hozzáférhetnek az adatokhoz.
Példa
A két osztály nyilvános és privát deklarált, és a program visszatérési értéke a háromszög területe.
#include#include
#include
névtér std használatával ;
osztályú háromszög
{
magán :
úszó x , és , Val vel ;
nyilvános :
üres bemenet ( )
{
cout << 'Írja be a háromszög x oldalát:-' ;
enni >> x ;
cout << 'Írja be a háromszög y oldalát:-' ;
enni >> és ;
cout << 'Írja be egy háromszög z oldalát:-' ;
enni >> Val vel ;
}
üres Terület ( )
{
úszó s = ( x + és + Val vel ) / 2 ;
úszó terület = sqrt ( s * ( s - x ) * ( s - és ) * ( s - Val vel ) ) ;
cout << ' \n A háromszög területe = << terület ;
}
} ;
int fő- ( )
{
t1 háromszög ;
t1. bemenet ( ) ;
t1. Terület ( ) ;
Visszatérés 0 ;
}
A main()-ban a t1 objektum közvetlenül nem férhet hozzá a float x, y és z privát osztályváltozóhoz, így csak közvetetten manipulálható az input() nyilvános függvényen keresztül, mivel ez a függvény megkapja az x, y és z értékeit.
A háromszög területét úgy kapjuk meg, hogy hozzáférünk a privát osztályhoz a nyilvános osztály használatával történő manipulálással. Ha az x, y és z értékei nem lesznek deklarálva a nyilvános osztályban, akkor nem lesznek elérhetők a main()-ban a számításokhoz.
Védett hozzáférés-módosító C++ nyelven
A védett kulcsszó alatti tagok és függvények védettek, csak az osztályon és a származtatott osztályon belül érhetők el. A többi osztály nem fér hozzá az adataihoz. Erősen védettek.
Példa
A védett kulcsszó alatt található védett adatok csak az osztályon belül és a származtatott osztály által olvashatók. Ez a példa a védett hozzáférés módosító gyakorlati bemutatója.
#include#include
#include
névtér std használatával ;
//szülő osztály
osztályú háromszög
{
védett :
úszó x , és , Val vel ;
} ;
//gyerekosztály
osztály HáromszögGyerek : nyilvános háromszög {
nyilvános :
üres bemenet ( )
{
cout << 'Írja be a háromszög x oldalát:-' ;
enni >> x ;
cout << 'Írja be a háromszög y oldalát:-' ;
enni >> és ;
cout << 'Írja be egy háromszög z oldalát:-' ;
enni >> Val vel ;
}
üres Terület ( )
{
úszó s = ( x + és + Val vel ) / 2 ;
úszó terület = sqrt ( s * ( s - x ) * ( s - és ) * ( s - Val vel ) ) ;
cout << ' \n A háromszög területe = << terület ;
}
} ;
int fő- ( )
{
TriangleChild Child ;
Gyermek. bemenet ( ) ;
Gyermek. Terület ( ) ;
Visszatérés 0 ;
}
A TriangleChild egy öröklött osztály, amely a Triangle osztályból származik. Az x, y és z változókat háromszögben deklaráljuk a védett kulcsszóval. Ez azt jelenti, hogy ezek a változók védettek, de a TriangleChild elérheti őket, mivel a Triangle a szülőosztálya. A változók értékei a TriangleChild programban vannak hozzárendelve, annak ellenére, hogy a Triangle osztályban deklarálva vannak.
A változókat a gyermekosztályon keresztül érjük el, majd kiszámítjuk a háromszög területét.
Következtetés
Az adatok elrejtése megakadályozza, hogy egy osztály adataihoz kívülről nemkívánatos hozzáférést kapjanak. A hozzáférés-módosítók a programban lévő adatok hozzáférhetőségének és láthatóságának kezelésére szolgálnak. Az adatok elrejtésére privát, védett és nyilvános hozzáférés-módosítókat használnak. A publikus kulcsszó alatt lévő adatokat az osztályon kívülről is beolvashatják a függvények. A privátnak nyilvánított adatok csak az osztályon belül olvashatók, míg a védett adatokhoz a szülő és a gyermekosztály is hozzáférhet.