Zalecane, 2022

Wybór Redakcji

Różnice między prywatnymi a chronionymi w C ++

Istnieją trzy typy ochrony dostępu zdefiniowane w języku programowania C ++ do ukrywania danych. Ukrywanie danych jest istotną częścią programowania obiektowego. Prywatne i chronione słowa kluczowe oferują poziom ochrony dostępu, aby ukryć dane i funkcje w obrębie klasy. Prywatni członkowie nie mogą być dziedziczeni, gdy chroniony członek może być dziedziczony, ale w ograniczonym zakresie. Te specyfikatory wskazują widoczność członków, w których prywatność jest bardziej restrykcyjna niż chroniona.

Wykres porównania

Podstawa do porównaniaPrywatnyChroniony
Dziedziczenie właściwości do klasy pochodnej
Klasa pochodna nie może uzyskać dostępu do prywatnych członków klasy podstawowej.Klasa pochodna może uzyskać dostęp do chronionych członków klasy podstawowej.
Dostępność
Prywatni członkowie klasy są niedostępni z zakresu klasy.Chronieni członkowie klasy są niedostępni poza zasięgiem klasy, z wyjątkiem klasy pochodnej natychmiast.
Dostępne z własnej klasytaktak
Dostępne z klasy pochodnejNietak
Dostępne z zewnątrzNieNie

Definicja prywatności

Członkowie klasy zadeklarowani jako prywatni mogą zostać odzyskani tylko w klasie. Innymi słowy, członkowie zadeklarowani w prywatnej sekcji klasy mogą uzyskać dostęp tylko przez funkcję friend i funkcję członka klasy. Prywatni członkowie nie mogą uzyskać bezpośrednio klasy pochodnej i są niedostępni poza zakresem klasy.

Program C ++ pokazuje koncepcję prywatnych specyfikatorów dostępu.

 #include using namespace std; class A {private: int i; public: void get () {cout <> i; }}; klasa B: publiczna A {public: void show () {i ++; cout << "\ n Twój wpis po incrementcpp"> # include using namespace std; klasa ssak {public: void mammalMethod (void) {cout << "Pochodzi pod kategorią ssaków." < 

W podanym wyżej programie jeden obiekt klasy potomnej jest tworzony z nazwą "ob", a funkcja członkowska klasy nadrzędnej jest dostępna poprzez wywołanie metody klasy potomnej "marine_mammalMethod". Mimo, że metoda macierzysta nie może być dostępna bezpośrednio z obiektem "ob".

Definicja chroniona

Członkowie klasy zadeklarowani jako chronieni w klasie mogą być dostępni jedynie poprzez funkcję członka i funkcję przyjaciela klasy. Tych chronionych członków nie można uzyskać poza zasięgiem klasy, za wyjątkiem klasy potomnej (od niej bezpośrednio pochodzącej). Służy ograniczonemu celowi dziedziczenia i dziedziczy właściwości w ograniczony sposób.

Poniższy program C ++ ilustruje pojęcie chronionych specyfikacji dostępu.

 #include using namespace std; class account1 {protected: int x, y; // dostępne dla klasy pochodnej public: void set (int a, int b) {x = a; y = b; } void show () {cout < 

W powyższym przykładzie klasa podrzędna dziedziczy właściwości klasy bazowej, ponieważ elementy danych są zadeklarowane jako publiczne lub chronione. Nie byłoby możliwe, gdyby x i y zostały zadeklarowane jako prywatne w klasie bazowej.

Kluczowe różnice między prywatnymi i chronionymi w C ++

  1. Chronione słowo kluczowe może być używane do tworzenia elementów klas, które są prywatne dla ich klasy, ale mogą być dziedziczone i używane przez klasę pochodną. I odwrotnie, nie jest to możliwe podczas używania prywatnego, ponieważ członkowie prywatni nie mogą być dziedziczeni bezpośrednio do klasy pochodnej.
  2. Kiedy klasa bazowa jest dziedziczona przy użyciu specyfikatora dostępu prywatnego, tworzy wszystkich publicznych i chronionych członków klasy bazowej, prywatnych członków klasy pochodnej. W przeciwieństwie do tego nie ma to miejsca w przypadku chronionych specyfikacji dostępu.

Wniosek

Prywatne i chronione to specyfikatory dostępu, które służą do ustawiania widoczności klasy i jej członków w różny sposób. Jednak ochrona jest bardziej elastyczna niż prywatna.

Top