A hozzáférés-módosítók vezérlése C++-ban: A tagok láthatóságának megértése

A Hozzaferes Modositok Vezerlese C Ban A Tagok Lathatosaganak Megertese



Az adatok elrejtése a C++ egyik kulcsfontosságú jellemzője, amely az osztályban lévő adatokhoz való hozzáférés korlátozására vonatkozik, hogy megakadályozza az osztály adataihoz való nem kívánt hozzáférést kívülről. Ezért a hozzáférés-módosítók segítségével meghatározható, hogy mely osztálytagok melyik külső forrás számára érhetők el, és melyek nem.

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.