Ieteicams, 2020

Redaktora Izvēle

Starpība starp privāto un aizsargāto C + +

C ++ programmēšanas valodā ir trīs piekļuves aizsardzības veidi, kas paredzēti datu slēpšanai. Datu slēpšana ir būtiska objektorientētas programmēšanas sastāvdaļa. Privātie un aizsargātie atslēgvārdi piedāvā piekļuves aizsardzības līmeni, lai paslēptu datus un funkcijas klasē. Privātie biedri nevar tikt mantoti, kamēr aizsargātais loceklis var būt mantojams, bet ierobežotā diapazonā. Šie raksturlielumi norāda to dalībnieku redzamību, kur privātie ir ierobežojošāki nekā aizsargātie.

Salīdzinājuma diagramma

Salīdzināšanas pamatsPrivātsAizsargāts
Atvasinātās klases mantojums
Atvasinātā klase nevar piekļūt bāzes klases privātpersonām.Atvasinātā klase var piekļūt aizsargātajiem biedriem.
Pieejamība
Klases privātie biedri nav pieejami ārpus klases.Klases aizsargātie dalībnieki nav pieejami ārpus klases, izņemot klasi, kas iegūta nekavējoties.
Pieejama no savas klases
Pieejams no atvasinātās klases
Pieejama no ārpuses

Privāta definīcija

Klases locekļi, kas deklarēti kā privāti, var tikt iegūti tikai klasē. Citiem vārdiem sakot, klases privātajā daļā deklarētos dalībniekus var piekļūt tikai klases drauga funkcija un dalībnieka funkcija. Privātie dalībnieki nav iegūstami atvasinātajai klasei tieši un nav pieejami ārpus klases.

C ++ programma parāda privāto piekļuves specifikāciju koncepciju.

 #include izmantojot namespace std; A klase {privāts: int i; public: void get () {cout <> i; }}; B klase: publiska A {public: void show () {i ++; cout << "i Jūsu ievadītais numurs pēc incrementcpp"> ir iekļauts ar vārdu telpu std; klase zīdītājs {public: void mammalMethod (void) {cout << "Tas pieder pie zīdītāju kategorijas." < 

Iepriekš minētajā programmā viens bērna klases objekts tiek izveidots ar nosaukumu “ob”, un vecāku klases biedru funkcijas var piekļūt, zvanot uz bērnu klases metodi “marine_mammalMethod”. Lai gan mātes metodi nevar piekļūt tieši ar objektu “ob”.

Aizsargāta definīcija

Klases locekļi, kas ir pasludināti par aizsargātiem klasē, var būt pieejami tikai ar klases funkciju un drauga funkciju. Šādus aizsargātos dalībniekus nevar piekļūt ārpus klases, izņemot bērnu klasi (kas nekavējoties iegūta no tā). Tas kalpo mantojuma ierobežotajam mērķim un ierobežotā veidā pārmanto mantojumus.

Turpmāk dotā C ++ programma ilustrē aizsargāto piekļuves specifikāciju koncepciju.

 #include izmantojot namespace std; klases konts1 {aizsargāts: int x, y; // pieejams atvasinātajai klasei: tukšums (int a, int b) {x = a; y = b; } void show () {cout < 

Iepriekšējā piemērā bērnu klase mantos bāzes klases īpašības, jo datu dalībnieki tiek pasludināti par publiskiem vai aizsargātiem. Nebūtu iespējams, ja x un y būtu pasludināti par privātiem bāzes klasē.

Galvenās atšķirības starp privāto un aizsargāto C ++

  1. Aizsargāto atslēgvārdu var izmantot, lai izveidotu klases biedrus, kas ir privāti savā klasē, taču tos var mantot un izmantot atvasinātā klase. Pretēji tam tas nav iespējams, lietojot privātu, jo privātie biedri nevar tikt mantoti tieši atvasinātajā klasē.
  2. Ja bāzes klase ir iedzimta, izmantojot privāto piekļuves specifikāciju, tā padara visu publisko un aizsargāto bāzes klases dalībnieku, atvasinātās klases privāto biedru. Pretstatā tam tas nav gadījums ar aizsargātu piekļuves specifikāciju.

Secinājums

Privātie un aizsargātie ir piekļuves parametri, kurus izmanto, lai atšķirīgi noteiktu klases un tās locekļu redzamību. Tomēr aizsargāts ir elastīgāks nekā privāts.

Top