Suositeltava, 2024

Toimituksen Valinta

Ero yksityisen ja suojatun välillä C ++: ssa

Tietojen piilottamiseksi C ++-ohjelmointikielellä on kolme eri tyyppistä suojaussuojaa. Tietojen piilottaminen on olennainen osa objektikohtaista ohjelmointia. Yksityiset ja suojatut avainsanat tarjoavat pääsyn suojauksen tason piilottaakseen tiedot ja toiminnot luokan sisällä. Yksityisiä jäseniä ei voi periä, kun suojattu jäsen voidaan periä, mutta rajoitetulla alueella. Nämä määrittelijät osoittavat niiden jäsenten näkyvyyden, joissa yksityiset ovat suojattavampia.

Vertailukaavio

Vertailun perusteetyksityinensuojattu
Perinnöllinen omaisuus johdettuun luokkaan
Johdettu luokka ei voi käyttää perusluokan yksityisiä jäseniä.Johdettu luokka voi käyttää perusluokan suojattuja jäseniä.
saavutettavuus
Luokan yksityiset jäsenet eivät ole käytettävissä luokkakentän ulkopuolella.Luokan suojatut jäsenet eivät ole käytettävissä luokkakentän ulkopuolella, lukuun ottamatta välittömästi luotua luokkaa.
Käytettävissä omasta luokastaanJooJoo
Saatavana johdetusta luokastaEiJoo
Käytettävissä ulkopuoleltaEiEi

Yksityisen määritelmä

Yksityisiksi julistetut luokan jäsenet voidaan hakea vain luokassa. Toisin sanoen luokkaan yksityisessä osassa ilmoitetut jäsenet voivat käyttää vain luokan ystävätoimintoa ja jäsenfunktiota. Yksityiset jäsenet eivät ole saatavana johdettuun luokkaan suoraan, eivätkä ne ole käytettävissä luokkakentän ulkopuolella.

C ++ -ohjelma näyttää yksityisen pääsyn määrittelijöiden käsitteen.

 # sisällytetään käyttämällä nimiavaruutta std; luokka A {yksityinen: int i; julkinen: void get () {cout <> i; }}; luokka B: public A {public: void show () {i ++; cout << "n Syötetty numero incrementcppin jälkeen>> sisältää nimiavaruuden std; luokka nisäkäs {public: void mammalMethod (void) {cout << "Se kuuluu nisäkäsluokkaan." < 

Yllä annetussa ohjelmassa luodaan yksi lapsiluokan kohde nimellä "ob" ja vanhemman luokan jäsenfunktio on käytettävissä soittamalla lapsiluokan menetelmällä "marine_mammalMethod". Vaikka emo-menetelmää ei voi käyttää suoraan objektilla ”ob”.

Suojelun määritelmä

Luokan jäseniksi, jotka on ilmoitettu suojatuksi luokassa, voidaan käyttää vain luokan jäsentoimintoa ja ystävätoimintoa. Näitä suojattuja jäseniä ei voi käyttää luokka-alueen ulkopuolelle, lukuun ottamatta lapsiluokkaa (välittömästi siitä peräisin oleva). Se palvelee perinnöllisesti rajoitettua tarkoitusta ja perii ominaisuudet rajoitetusti.

Alla oleva C ++ -ohjelma havainnollistaa suojattujen pääsykäsitteiden käsitettä.

 # sisällytetään käyttämällä nimiavaruutta std; luokka-tili1 {suojattu: int x, y; // johdettuun luokkaan julkinen: void set (int a, int b) {x = a; y = b; } void show () {cout < 

Edellä olevassa esimerkissä lapsiluokka perii perusluokan ominaisuudet, koska datan jäsenet julistetaan julkisiksi tai suojatuksi. Ei olisi mahdollista, jos x ja y olisi ilmoitettu yksityisiksi perusluokassa.

Yksityiset ja suojatut C ++: n erot

  1. Suojattua avainsanaa voidaan käyttää luokkaan kuuluvien jäsenten rakentamiseen, jotka ovat yksityisiä omalle luokalleen, mutta jotka voidaan periä ja käyttää johdetun luokan avulla. Sitä vastoin tämä ei ole mahdollista yksityisen käytön aikana, koska yksityisiä jäseniä ei voi periä suoraan johdetulle luokalle.
  2. Kun perusluokka peritään yksityisen pääsyn määrittelijän avulla, se tekee kaikki perusluokan yleisöt ja suojatut jäsenet, johdetun luokan yksityiset jäsenet. Sitä vastoin tämä ei ole suojatun pääsyn määrittelijöissä.

johtopäätös

Yksityiset ja suojatut ovat pääsyn määrittelijöitä, joita käytetään luokan ja sen jäsenten näkyvyyden asettamiseen eri tavalla. Suojattu on kuitenkin joustavampi kuin yksityinen.

Top