Sådan kontrolleres adgangsmodifikatorer i C++: Forstå medlemssynlighed

Sadan Kontrolleres Adgangsmodifikatorer I C Forsta Medlemssynlighed



Dataskjul er en af ​​nøglefunktionerne i C++, som refererer til den begrænsende adgang til data i en klasse for at forhindre uønsket adgang til dataene i en klasse udefra. Derfor bruges adgangsmodifikatorerne til at definere, hvilke klassemedlemmer der er tilgængelige for hvilken ekstern kilde, og hvilke ikke.

Adgangsmodifikatorer i C++

Adgangsmodifikatorer bruges til at styre tilgængeligheden og synligheden af ​​dataene i en klasse. De sætter nogle begrænsninger for datamedlemmerne, så de ikke kan tilgås af de eksterne funktioner. Adgangsmodifikatorerne er af tre typer i C++:

Public Access Modifier i C++

Alle medlemmer af klassen, der er erklæret under nøgleordet offentlig, vil være tilgængelige for alle funktioner uden for klassen i programmet. Operatøren for direkte medlemsadgang (.), også kendt som prikoperatøren, kan bruges med formålet med den specifikke klasse for at få adgang til disse datamedlemmer.







Eksempel

Offentlig adgangsmodifikator bruges til at erklære en klasse, og dens datamedlemmer tilgås af de andre funktioner i programmet.



#include

#include

#include

bruger navneområde std ;
klasse trekant
{
offentlig :
flyde x , og , Med ;
ugyldig input ( )
{
cout << 'Indtast siden x i en trekant:-' ;
spise >> x ;
cout << 'Indtast siden y af en trekant:-' ;
spise >> og ;
cout << 'Indtast siden z i en trekant:-' ;
spise >> Med ;
}
ugyldig Areal ( )
{
flyde s = ( x + og + Med ) / 2 ;
flyde areal = sqrt ( s * ( s - x ) * ( s - og ) * ( s - Med ) ) ;
cout << ' \n Areal af trekant =' << areal ;
}
} ;
int vigtigste ( )
{
Trekant t1 ;
t1. input ( ) ;
t1. Areal ( ) ;
Vend tilbage 0 ;
}

Trekanten er defineret som klassen, og dens parametre er under det offentlige nøgleord. Derefter beregnes trekantens areal uden for denne klasse ved at få adgang til datamedlemmerne i den offentlige modifikator.







De tre sider af trekanten indtastes af brugeren, og trekantens areal beregnes ved at få adgang til værdierne uden for klassen ved hjælp af standardformlen, som er 13,4164.

Privat adgangsmodifikator i C++

Alle medlemmer af klassen, der er erklæret under nøgleordet private, vil ikke være tilgængelige for nogen funktion uden for klassen i programmet. Disse private medlemmer kan kun læses af de direkte medlemmer inden for samme klasse. Vennefunktioner og klasser kan dog også få adgang til dataene.



Eksempel

De to klasser offentlige og private er deklareret, og programmets returværdi skal være trekantens areal.

#include

#include

#include

bruger navneområde std ;
klasse trekant
{

privat :
flyde x , og , Med ;
offentlig :
ugyldig input ( )

{

cout << 'Indtast siden x i en trekant:-' ;
spise >> x ;
cout << 'Indtast siden y af en trekant:-' ;
spise >> og ;
cout << 'Indtast siden z i en trekant:-' ;
spise >> Med ;

}
ugyldig Areal ( )
{

flyde s = ( x + og + Med ) / 2 ;
flyde areal = sqrt ( s * ( s - x ) * ( s - og ) * ( s - Med ) ) ;
cout << ' \n Areal af trekant =' << areal ;

}

} ;

int vigtigste ( )
{
Trekant t1 ;
t1. input ( ) ;
t1. Areal ( ) ;
Vend tilbage 0 ;

}

I main() kan objektet t1 ikke direkte få adgang til den private klassevariable float x, y og z, så det kan kun indirekte manipuleres gennem den offentlige funktion input(), da denne funktion opnår værdierne af x, y og z.

Arealet af trekanten opnås ved at få adgang til den private klasse ved at manipulere den ved hjælp af offentlig klasse. Hvis værdierne af x, y og z ikke vil blive erklæret i offentlig klasse, vil de ikke blive tilgået i main() til beregninger.

Protected Access Modifier i C++

Medlemmerne og funktionerne under det beskyttede nøgleord er beskyttet, de kan kun tilgås inden for klassen og afledt klasse. Resten af ​​klasserne kan ikke få adgang til deres data. De er meget beskyttede.

Eksempel

De beskyttede data under det beskyttede nøgleord kan kun læses inden for klassen og af klassen, som er den afledte klasse. Dette eksempel er den praktiske demonstration af den beskyttede adgangsmodifikator.

#include

#include

#include

bruger navneområde std ;
//forældreklasse
klasse trekant
{

beskyttet :
flyde x , og , Med ;
} ;
//barneklasse
klasse TrekantBarn : offentlig trekant {
offentlig :
ugyldig input ( )

{

cout << 'Indtast siden x i en trekant:-' ;
spise >> x ;
cout << 'Indtast siden y af en trekant:-' ;
spise >> og ;
cout << 'Indtast siden z i en trekant:-' ;
spise >> Med ;

}
ugyldig Areal ( )
{
flyde s = ( x + og + Med ) / 2 ;
flyde areal = sqrt ( s * ( s - x ) * ( s - og ) * ( s - Med ) ) ;
cout << ' \n Areal af trekant =' << areal ;

}
} ;

int vigtigste ( )

{
TrekantBarn Barn ;
Barn. input ( ) ;
Barn. Areal ( ) ;
Vend tilbage 0 ;

}

TriangleChild er en nedarvet klasse, som er afledt af klassen Triangle. Variablerne x, y og z er deklareret i Trekant med det beskyttede nøgleord. Dette betyder, at disse variabler er beskyttede, men kan tilgås af TriangleChild, da Triangle er dens overordnede klasse. Værdierne af variable er blevet tildelt i TriangleChild, selvom de er erklæret i Triangle-klassen.

Der tilgås variablerne gennem børneklassen, og derefter beregnes arealet af en trekant.

Konklusion

Dataskjul forhindrer uønsket adgang til en klasses data udefra. Adgangsmodifikatorer bruges til at styre tilgængeligheden og synligheden af ​​dataene i et program. Private, beskyttede og offentlige adgangsmodifikatorer bruges til at skjule dataene. Data under det offentlige nøgleord kan også læses af funktionerne uden for klassen. De data, der er erklæret som private, kan kun læses inden for klassen, mens beskyttede data også kan tilgås af forælderen og den underordnede klasse.