Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Skirtumas tarp privačių ir apsaugotų C + +

Duomenų slėpimui C ++ programavimo kalba yra trys prieigos apsaugos tipai. Duomenų slepimas yra esminė į objektą orientuoto programavimo dalis. Privatūs ir saugomi raktiniai žodžiai suteikia prieigos apsaugos lygį, kad paslėptų duomenis ir funkcijas klasėje. Privatūs nariai negali būti paveldimi, o saugomas narys gali būti paveldėtas, bet ribotame diapazone. Šios specifikacijos nurodo narių, kurių privatumas yra labiau ribojamas nei matomas, matomumą.

Palyginimo diagrama

Palyginimo pagrindasPrivatusApsaugota
Paveldimo turto paveldėjimas
Išvestinė klasė negali pasiekti bazinių klasių privačių narių.Išvestinė klasė gali naudotis bazinės klasės saugomais nariais.
Prieinamumas
Privatūs klasės nariai nėra pasiekiami iš klasės.Apsaugoti klasės nariai yra nepasiekiami iš klasės ribų, išskyrus klasę, kuri buvo gauta iš karto.
Prieinama iš savo klasėsTaipTaip
Prieinama iš išvestinės klasėsNeTaip
Prieinama iš išorėsNeNe

Privatumo apibrėžimas

Klasės nariai, deklaruoti kaip privatūs, gali būti atsiimti tik klasėje. Kitaip tariant, nariai, paskelbti privačiame klasės skyriuje, gali būti prieinami tik pagal draugo funkciją ir klasės funkciją. Privatūs nariai negali būti tiesiogiai gauti iš gautos klasės ir nepasiekiami iš klasės.

„C ++“ programa rodo privačių prieigos specifikų sąvoką.

 #įtraukti naudojant vardų sritį std; A klasė {private: int i; public: void get () {cout <> i; }}; B klasė: public A {public: void show () {i ++; cout << "n Jūsų įvestas skaičius po incrementcpp"> # apima vardų erdvę std; klasės žinduolis {public: void mammalMethod (void) {cout << "Jis patenka į žinduolių kategoriją." < 

Pirmiau pateiktoje programoje sukuriamas vienas vaiko klasės objektas su pavadinimu „ob“, o tėvų klasės nario funkcija pasiekiama skambinant vaikų klasės metodu „marine_mammalMethod“. Nors pirminis metodas negali būti pasiekiamas tiesiogiai su objektu „ob“.

Apsaugos apibrėžtis

Klasės nariai, paskelbti kaip saugomi klasėje, gali būti prieinami tik per klasės nario funkciją ir draugo funkciją. Šiems saugomiems nariams negalima patekti iš klasės taikymo srities, išskyrus vaiko klasę (iš jos iš karto gauta). Jis tarnauja ribotam paveldėjimo tikslui ir paveldi savybes ribotai.

Toliau pateikta C ++ programa iliustruoja saugomų prieigos specifikų koncepciją.

 #įtraukti naudojant vardų sritį std; klasės paskyra1 {apsaugota: int x, y; // prieinama išvestinei klasei viešai: negaliojančių rinkinys (int a, int b) {x = a; y = b; } void show () {cout < 

Pirmiau pateiktame pavyzdyje vaikų klasė paveldi bazinės klasės savybes, nes duomenų nariai yra paskelbti viešais arba saugomais. Nebūtų įmanoma, jei x ir y buvo paskelbti privačiais bazinės klasės.

Pagrindiniai skirtumai tarp privačių ir apsaugotų C + +

  1. Apsaugotas raktinis žodis gali būti naudojamas klasių nariams, kurie yra privatūs savo klasėje, sukurti, bet gali būti paveldimi ir naudojami pagal gautą klasę. Priešingai, tai neįmanoma naudojant privatų asmenį, nes privatūs nariai negali būti paveldimi tiesiogiai iš gautos klasės.
  2. Kai bazinė klasė paveldima naudojant privataus prieigos specifiką, ji suteikia visiems visuomenei ir saugomiems bazinės klasės nariams, privačiam išvestinės klasės nariams. Priešingai, taip nėra saugomų prieigos specifikacijų atveju.

Išvada

Privatūs ir apsaugoti yra prieigos specifikai, naudojami skirtingiems klasės ir jos narių matomumui nustatyti. Tačiau saugoma yra lankstesnė nei privati.

Top