Chroniony C ++

Chroniony C ++

Podobnie jak wiele innych języków programowania, C ++ zapewnia nam również funkcję ukrywania danych do celów bezpieczeństwa. Używamy modyfikatorów dostępu w ramach programu C ++, aby chronić nasze dane na różnych poziomach bezpieczeństwa. C ++ obejmuje specyfikatory dostępu publicznego, prywatnego i chronionego w celu zabezpieczenia swoich zmiennych i funkcji. Specyfikator dostępu chroniony jest nieco inny od prywatnych i publicznych. W tym artykule skupi się na „chronionym” modyfikatorze dostępu w przykładach kodu C ++. Więc zacznijmy. Otwórz aplikację Shell, utwórz nowy plik C ++ i otwórz go w edytorze.

Przykład 01: publiczne vs. Prywatny

Przed skupieniem się na specyfikatoru chronionego dostępu musimy nauczyć się pracy publicznego i prywatnego specyfikatora dostępu. Po użyciu przestrzeni nazw C ++ na początku kodu, zadeklarowaliśmy test klasowy z jedną zmienną publiczną „A” i jedną zmienną prywatną „B”. Zainicjowaliśmy obiekt „T” klasy testowej w metodzie Main ().

Wartość 10 jest przypisana do zmiennej „a”, która jest publiczna. Korzystając z obiektu „Cout”, wyświetliśmy wartość zmiennej „A” za pomocą obiektu „T”. Ten sam obiekt klasy testowej „T” został tutaj wykorzystany do przypisania wartości „12” do prywatnego członka danych „B”. Korzystając ponownie z obiektu „Cout”, używamy obiektu „T” do wyświetlania zmiennej wartości „B”. Wreszcie, oświadczenie zwrotu 0 pomyślnie opuści program. Czas najpierw zapisać ten nowy kod C ++ i skompilować go na powłoce.

Musisz upewnić się, że kompilator C ++ „G ++” jest zainstalowany i w pełni skonfigurowany w systemie. Wypróbowaliśmy więc instrukcję kompilatora G ++ na powładzie po nazwie pliku „chroniony.CC ”. Wykonanie tej instrukcji kompilatora mamy błąd w linii 13, gdy przypisujemy wartość do zmiennej prywatnej „B” za pomocą obiektu „T”. Wynika to z faktu, że zmiennej prywatnej w teście klasowym nie może być używana poza tą klasą, i.mi., w dowolnej funkcji lub klasie. Modyfikator dostępu publicznego umożliwi każdemu zmienną i funkcję dla wszystkich. Natomiast prywatny modyfikator dostępu nie pozwala na dostęp do nikogo zmiennych i funkcji.mi., każda klasa.

Zobaczmy, w jaki sposób możemy użyć prywatnych członków danych do wyświetlania na powładzie. Zaktualizowaliśmy ten sam plik C ++ w teście klasy, deklarując dwie funkcje publiczne, get () i set (). Wdrożenie obu funkcji zostało wykonane poza klasą „testu”. Funkcja „get ()” służy do zwrócenia wartości prywatnego elementu danych „y” do funkcji Main () dla wyświetlania.

Funkcja set () wykorzystuje wartość przekazaną przez funkcję main () i przypisuje ją do prywatnego elementu danych „y” testu klasy. W metodzie main () używamy obiektu „t” testu klasy, aby przypisać wartość „10” do zmiennej publicznej „x” testu klasowego. Instrukcja Cout wyświetla wartość „x” na powładzie. Teraz nazywamy funkcję set () obiektem „t”, aby przekazać wartość „14” do prywatnego członka danych „y” klasy „test”. Instrukcja Cout nazywała funkcję „Get”, aby wyświetlić wartość zmiennej „y” na powłoce. Ten kod pozwoli nam wyświetlić wartość prywatnego elementu danych w powłoce za pomocą tej samej klasy publicznych funkcji danych. Zapiszmy ten kod i wykonajmy go:

Mamy zarówno wartości dla „X”, jak i „Y” wyświetlanych podczas uruchamiania tego niedawno zaktualizowanego kodu:

Przykład 02:

Rzućmy teraz modyfikatora chronionego dostępu. Otworzyliśmy plik kodu i trochę go zaktualizowaliśmy. Dodano wymagane biblioteki wraz z przestrzenią nazw C ++. Zadeklarował klasę rodziców i klasę dziecka pochodzącą z „rodzica”. Klasa nadrzędna zawiera chronioną zmienną „x” typu liczb całkowitych. Klasa dziecka zawiera tylko dwie funkcje publiczne, i.mi., ustaw i zdobądź. Po zajęciach zaimplementowaliśmy obie funkcje klasy dziecięcej, ustawiając wartość „x” i powracając do funkcji Main (.

Main () funkcją jest utworzenie obiektu „C” dla klasy dziecięcej. Ten obiekt służy do ustawienia wartości dla zmiennej „x” i wyświetlania jej na powłoce metodą get (). Użycie obiektu do przypisania wartości do zmiennej „x” wyświetli błąd po wykonaniu. Następnie zapisz kod i wyjdź z pliku.

Wyjście jest takie same, jak się spodziewane, i.mi., błąd.

Aby uniknąć tego błędu po przypisaniu wartości do chronionego elementu danych, powinniśmy użyć funkcji danych publicznych, i.mi., Ustaw i zdobądź funkcje w klasie dziecięcej. Za pomocą funkcji set () możemy przypisać wartość do chronionej zmiennej „x”, jak to zrobiliśmy w następującym kodzie obrazu. Następnie możemy łatwo użyć funkcji get () do wyświetlania chronionego elementu danych na powładzie w instrukcji obiektu Cout. Zapisz ten kod i skompiluj go później:

Po skompilowaniu zaktualizowanego kodu tym razem nie mamy błędów kompilacji. Mamy wartość chronionej zmiennej „x” na ekranie powłoki za pomocą zapytania wykonania.

Przykład 03:

Rzućmy okiem na inny przykład, aby użyć modyfikatora chronionego dostępu. W tym przykładzie będziemy używać wielosobocznego, aby uczynić go wyraźniejszym i dodać trzy klasy A, B i C. Klasa A jest klasą macierzystą B, a B jest rodzicem C. Zarówno A, jak i B zawierają chronione zmienne „X” i „Y”. Klasa B i C zawiera funkcje jako członkowie danych publicznych, i.mi., set () i get ().

Klasa B wykorzystuje swoje funkcje do ustawiania i zwracania wartości dla chronionego elementu danych klasy A „x”, ponieważ B jest jego pochodną klasą. Natomiast klasa C wykorzystuje swoje funkcje do ustawiania i uzyskiwania wartości „Y” z klasy B jako klasy C jest jej pochodną klasą. W ramach funkcji kodu sterownika () utworzyliśmy obiekt klasy B i ustawiliśmy wartość zmiennej „x”. Ten sam obiekt wyświetla wartość zmiennej „x” na powłoce. Obiekt klasy C został utworzony, aby ustawić wartość dla zmiennej chronionej „Y” i wyświetlanie jej na powładzie. Uruchommy następujący kod, aby zobaczyć wyniki:

Wyjście pokazuje, że funkcje set () i gets () zastępują już zainicjowaną wartość dla obu zmiennych chronionych.

Wniosek:

Chodziło o użycie modyfikatora chronionego dostępu do zabezpieczenia członków danych dla klas w C++. Aby to wyjaśnić, omówiliśmy również przykład korzystania z publicznych i prywatnych członków danych. Omówiliśmy także dziedzictwo, aby zademonstrować działanie i użycie bezpiecznych specyfikatorów dostępu w naszym kodzie. Użycie funkcji set () i get () to plus, aby uniknąć błędów podczas wykonywania tego artykułu. Mamy nadzieję, że ten artykuł jest pomocny. Sprawdź inne artykuły z Linux, aby uzyskać więcej wskazówek i samouczków.