Beskyttet C ++

Beskyttet C ++

Som mange andre programmeringsspråk gir C ++ oss også funksjonen i data som gjemmer seg for sikkerhetsformål. Vi bruker tilgangsmodifiserere i et C ++ -program for å beskytte våre data på forskjellige sikkerhetsnivåer. C ++ inkluderer de offentlige, private og beskyttede tilgangspesifikatorene for å sikre sine variabler og funksjoner. Den beskyttede tilgangspesifikatoren er litt annerledes enn både privat og offentlig. Denne artikkelen vil fokusere på den "beskyttede" tilgangsmodifisereren i C ++ -kodeeksempler. Så la oss komme i gang. Åpne Shell -applikasjonen, lag en ny C ++ -fil og åpne den i redigereren.

Eksempel 01: offentlig vs. Privat

Før vi fokuserer på den beskyttede tilgangspesifikatoren, må vi lære å jobbe med en offentlig og privat tilgangspesifikator. Etter å ha brukt C ++ navneområdet i starten av en kode, har vi erklært en klassetest med en offentlig variabel “A” og en privat variabel “B”. Vi har initialisert et objekt “t” av en testklasse i hovedmetoden ().

Verdien 10 er tilordnet variabel “A”, som er offentlig. Ved hjelp av "cout" -objektet har vi vist verdien av variabel "a" ved å bruke "t" -objektet. Det samme testklasseobjektet “T” er blitt brukt her for å tilordne verdien “12” til det private datamedlemmet “B”. Ved å bruke "cout" -objektet igjen, bruker vi "T" -objektet for å vise den variable "B" -verdien. Til slutt vil retur 0 -uttalelsen avslutte programmet. Det er på tide å lagre denne nye C ++ -koden først, og kompilere den på skallet.

Du må sikre at C ++ -kompilatoren “G ++” er installert og fullstendig konfigurert i systemet ditt. Så vi har prøvd G ++ kompilatorinstruksjonen på skallet etter navnet på en fil “beskyttet.CC ”. Utførelse av denne kompilatorinstruksjonen, vi har feilen på linje 13 når vi tildeler verdien til den private variabelen “B” ved å bruke objektet “T”. Dette er fordi den private variabelen i klassetesten ikke kan brukes utenfor denne klassen, jeg.e., i hvilken som helst funksjon eller klasse. Modifikatoren for offentlig tilgang vil tillate alle variabler og funksjoner å være tilgjengelig for alle. I kontrast tillater ikke den private tilgangsmodifisereren tilgang til variabler og funksjoner for noen, i.e., hver klasse.

La oss se hvordan vi kan bruke private datamedlemmer som skal vises på skallet. Vi har oppdatert den samme C ++ -filen i klassetesten ved å erklære de to offentlige funksjonene, få () og sette (). Implementeringen av begge funksjonene er gjort utenfor "test" -klassen. "Get ()" -funksjonen brukes til å returnere verdien av det private datamedlemmet "y" til hoved () -funksjonen for visning.

Set () -funksjonen bruker verdien som er bestått av Main () -funksjonen og tildeler den til det private datamedlemmet "y" i klassetesten. Innenfor Main () -metoden har vi brukt objektet “T” for klassetesten for å tildele verdi “10” til den offentlige variabelen “X” i klassetesten. Cout -setningen viser verdien av “x” på skallet. Nå har vi ringt SET () -funksjonen etter objektet “T” for å gi verdien “14” til det private datamedlemmet “Y” av klasse “Test”. COUT -uttalelsen har kalt "get" -funksjonen for å vise verdien av variabel "y" på skallet. Denne koden vil tillate oss å vise den private datamedlemmerverdien på skallet ved å bruke de samme klassens offentlige datafunksjoner. La oss lagre denne koden og utføre den:

Vi har både verdiene for "X" og "Y" som vises på kjøringen denne nylig oppdaterte koden:

Eksempel 02:

La oss se på den beskyttede tilgangsmodifisereren nå. Vi har åpnet kodefilen og oppdatert den litt. Lagt til de nødvendige bibliotekene sammen med C ++ navneområdet. Erklærte en foreldreklasse og en barneklasse avledet fra "forelderen". Foreldreklassen inneholder en beskyttet variabel “x” av heltallstype. Barneklassen inneholder bare to offentlige funksjoner, i.e., Sett og få. Etter klassene har vi implementert begge funksjonene til barneklassen ved å sette verdien av “X” og gå tilbake til Main () -funksjonen.

Hovedfunksjonen () er å lage objekt “C” for barneklassen. Dette objektet brukes til å angi verdien for variabel “x” og vise det på skallet via get () -metoden. Bruken av et objekt for å tildele verdi til variabel “x” vil vise en feil ved utførelsen. Lagre koden og avslutt filen.

Utgangen er den samme som forventet, jeg.e., feil.

For å unngå denne feilen ved tildeling av verdien til et beskyttet datamedlem, bør vi bruke de offentlige datafunksjonene, i.e., Sett og få funksjoner i barneklassen. Ved hjelp av SET () -funksjonen kan vi tilordne verdien til den beskyttede variabelen “X” som vi gjorde i følgende bildekode. Etter det kan vi enkelt bruke get () -funksjonen til å vise det beskyttede datamedlemmet på skallet i COUT -objektuttalelsen. Lagre denne koden og kompiler den etter det:

Etter å ha samlet den oppdaterte koden, har vi ingen kompilasjonsfeil denne gangen. Vi har verdien av den beskyttede variabelen “x” som vises på skallskjermen ved hjelp av utførelsesspørsmålet.

Eksempel 03:

La oss se på et annet eksempel for å bruke den beskyttede tilgangsmodifisereren. Innenfor dette eksemplet vil vi bruke multi-inheritance for å gjøre det tydeligere og legge til tre klasser A, B og C. Klasse A er foreldreklassen B, og B er overordnet til C. Både A og B inneholder de beskyttede variablene “X” og “Y”. Klasse B og C inneholder funksjoner som offentlige datamedlemmer, i.e., sett () og få ().

Klasse B bruker sine funksjoner for å angi og returnere verdi for klasse A -beskyttet datamedlem “X”, da B er dens avledede klasse. I kontrast bruker klasse C sine funksjoner for å angi og få verdien “y” fra klasse B som klasse C er dens avledede klasse. Innenfor Main () driverkodefunksjonen har vi opprettet et objekt i klasse B og angir verdien for "x" -variabelen. Det samme objektet viser verdien av variabel “x” på skallet. Klasse C -objektet er opprettet for å angi verdien for den beskyttede variabelen “y” og vise den på skallet. La oss kjøre følgende kode for å se resultatene:

Utgangen viser bruk av sett () og Get () -funksjoner erstatter den allerede initialiserte verdien for begge beskyttede variabler.

Konklusjon:

Dette handlet om å bruke en beskyttet tilgangsmodifiserer for å sikre datamedlemmene for klasser i C++. For å gjøre det mer tydelig, har vi også diskutert eksemplet med å bruke offentlige og private datamedlemmer. Vi har også diskutert arven for å demonstrere arbeid og bruk av sikre tilgangspesifikasjoner i koden vår. Å bruke SET () og Get () -funksjonen er et pluss for å unngå feil mens du utfører denne artikkelen. Vi håper du fant denne artikkelen nyttig. Sjekk de andre Linux -hint -artiklene for flere tips og opplæringsprogrammer.