Ajánlott, 2024

Szerkesztő Választása

A különbség a privát és a védett C ++ között

A C ++ programozási nyelvben háromféle hozzáférési védelem van megadva az adatok elrejtéséhez. Az adatok elrejtése az objektum-orientált programozás lényeges része. A privát és védett kulcsszavak a hozzáférési védelem szintjét kínálják az adatok és funkciók elrejtésére egy osztályon belül. A magánszemélyek nem örökölhetők, míg a védett tag örökölhető, de korlátozott tartományban lehet. Ezek a specifikátorok jelzik a tagok láthatóságát, ahol a privát korlátozás a védettebb.

Összehasonlító táblázat

Az összehasonlítás alapjaMagánVédett
A származtatott osztály öröksége
A származtatott osztály nem férhet hozzá az alaposztályba tartozó magánszemélyekhez.A származtatott osztály hozzáférhet az alaposztály által védett tagokhoz.
Megközelíthetőség
Az osztály magántulajdonosai nem érhetők el az osztály köréből.Az osztály védett tagjai nem érhetők el az osztályterületen kívül, kivéve az azonnali osztályt.
Saját osztályból elérhetőIgenIgen
Hozzáférhető származékos osztálybólNemIgen
Kívülről hozzáférhetőNemNem

A magánfogalom meghatározása

A privátnak nyilvánított osztálytagok csak az osztályon belül szerezhetők be. Más szavakkal, az osztály magánszakaszában bejelentett tagok csak az osztály barát funkciójával és tagfüggvényével érhetők el. A privát tagok közvetlenül nem szerezhetők be a származtatott osztályba, és nem érhetők el az osztályterületen kívül.

A C ++ program a privát hozzáférési specifikációk fogalmát mutatja.

 #include std; A osztály {private: int i; nyilvános: void get () {cout <> i; }}; B osztály: nyilvános A {nyilvános: void show () {i ++; cout << "n Az incrementcpp"> # után beírt számod névtér std; osztály emlős {public: void mammalMethod (void) {cout << "Az emlős kategóriába tartozik." < 

A fenti programban a gyermekosztály egyik objektuma az „ob” névvel jön létre, és a szülőosztály tagfüggvénye a „marine_mammalMethod” gyermekosztályos módszer hívásával érhető el. Bár a szülő módszer nem érhető el közvetlenül az „ob” objektummal.

A védett definíció

Az osztályban védettnek nyilvánított osztálytagok csak az osztály tagfunkcióján és barátfunkcióján keresztül érhetők el. Ezek a védett tagok nem érhetők el az osztályterületen kívül, a gyermekosztály kivételével (azonnal abból származnak). Ez az öröklés korlátozott célját szolgálja, és korlátozott módon örökölte a tulajdonságokat.

Az alábbi megadott C ++ program illusztrálja a védett hozzáférési specifikációk fogalmát.

 #include std; class account1 {protected: int x, y; // hozzáférhető a nyilvános osztályhoz: void set (int a, int b) {x = a; y = b; } void show () {cout < 

A fenti példában a gyermekosztály örökli az alaposztály tulajdonságait, mert az adat tagok nyilvánosak vagy védettek. Nem lenne lehetséges, ha x-t és y-t magánbázisnak nyilvánították az alaposztályban.

Kulcsfontosságú különbségek a privát és a védett C ++ között

  1. A védett kulcsszó olyan osztálytagok létrehozására használható, amelyek saját osztályukhoz tartoznak, de örökölhetők és felhasználhatók a származtatott osztály. Ez viszont nem lehetséges a privát használat során, mert a magánszemélyek nem örökölhetők közvetlenül a származtatott osztályra.
  2. Amikor az alaposztályt a privát hozzáférési specifikáció használatával örököljük, az alaposztály összes nyilvános és védett tagját, a származtatott osztály magántulajdonosait teszi. Ezzel ellentétben ez nem így van a védett hozzáférési specifikációk esetében.

Következtetés

A privát és védett hozzáférési jellemzők az osztály és a tagok láthatóságának eltérő beállítására szolgálnak. A védettség azonban rugalmasabb, mint a magán.

Top