Τροποποιητές πρόσβασης C ++

Σε αυτό το σεμινάριο, θα μάθουμε για τους τροποποιητές πρόσβασης για τάξεις C ++ με τη βοήθεια παραδειγμάτων. Οι τροποποιητές πρόσβασης του C ++ είναι δημόσιοι, ιδιωτικοί και προστατευμένοι.

Ένα από τα κύρια χαρακτηριστικά των αντικειμενοστρεφών γλωσσών προγραμματισμού όπως το C ++ είναι η απόκρυψη δεδομένων .

Η απόκρυψη δεδομένων αναφέρεται στον περιορισμό της πρόσβασης σε μέλη δεδομένων μιας τάξης. Αυτό γίνεται για να αποφευχθεί η αλλοίωση άλλων λειτουργιών και κλάσεων με τα δεδομένα κλάσης.

Ωστόσο, είναι επίσης σημαντικό να γίνουν προσβάσιμες ορισμένες λειτουργίες μέλους και δεδομένα μέλους, έτσι ώστε τα κρυφά δεδομένα να μπορούν να χειριστούν έμμεσα.

Οι τροποποιητές πρόσβασης του C ++ μας επιτρέπουν να προσδιορίσουμε ποια μέλη της τάξης είναι προσβάσιμα σε άλλες τάξεις και λειτουργίες και ποιες όχι.

Για παράδειγμα,

 class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) ); 

Εδώ, οι μεταβλητές patientNumber και διάγνωση της Patientτάξης κρύβονται χρησιμοποιώντας τη privateλέξη-κλειδί, ενώ οι συναρτήσεις μελών καθίστανται προσβάσιμες χρησιμοποιώντας τη publicλέξη-κλειδί.

Τύποι τροποποιητών πρόσβασης C ++

Στο C ++, υπάρχουν 3 τροποποιητές πρόσβασης:

  • public
  • private
  • protected

δημόσιος τροποποιητής πρόσβασης

  • Η publicλέξη-κλειδί χρησιμοποιείται για τη δημιουργία δημόσιων μελών (δεδομένα και λειτουργίες).
  • Τα δημόσια μέλη είναι προσβάσιμα από οποιοδήποτε μέρος του προγράμματος.

Παράδειγμα 1: C ++ δημόσιος τροποποιητής πρόσβασης

 #include using namespace std; // define a class class Sample ( // public elements public: int age; void displayAge() ( cout << "Age = " << age << endl; ) ); int main() ( // declare a class object Sample obj1; cout <> obj1.age; // call class function obj1.displayAge(); return 0; )

Παραγωγή:

 Εισαγάγετε την ηλικία σας: 20 Ηλικία = 20

Σε αυτό το πρόγραμμα, δημιουργήσαμε μια τάξη με το όνομα Sample, η οποία περιέχει μια publicμεταβλητή ηλικία και μια publicσυνάρτηση displayAge().

Στο main(), έχουμε δημιουργήσει ένα αντικείμενο της Sampleκλάσης που ονομάζεται obj1. Στη συνέχεια, έχουμε πρόσβαση στα δημόσια στοιχεία απευθείας χρησιμοποιώντας τους κωδικούς obj.ageκαι obj.displayAge().

τροποποιητής ιδιωτικής πρόσβασης

  • Η privateλέξη-κλειδί χρησιμοποιείται για τη δημιουργία ιδιωτικών μελών (δεδομένα και λειτουργίες).
  • Τα ιδιωτικά μέλη είναι προσβάσιμα μόνο μέσα από την τάξη.
  • Ωστόσο, οι τάξεις φίλων και οι λειτουργίες φίλων μπορούν να έχουν πρόσβαση σε ιδιωτικά μέλη.

Παράδειγμα 2: Προσδιοριστής ιδιωτικής πρόσβασης C ++

 #include using namespace std; // define a class class Sample ( // private elements private: int age; // public elements public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare an object Sample obj1; cout <> ageInput; // call function and pass ageInput as argument obj1.displayAge(ageInput); return 0; )

Παραγωγή:

 Εισαγάγετε την ηλικία σας: 20 Ηλικία = 20

Στο main(), το αντικείμενο obj1 δεν μπορεί να έχει άμεση πρόσβαση στην ηλικιακή μεταβλητή κλάσης.

 // error cin>> obj1.age;

Μπορούμε εμμέσως να χειριστούμε την ηλικία μόνο μέσω της δημόσιας συνάρτησης displayAge(), καθώς αυτή η συνάρτηση αντιστοιχίζει την ηλικία στο όρισμα που μεταδίδεται σε αυτήν, δηλαδή την παράμετρο συνάρτησης int a.

προστατευμένος τροποποιητής πρόσβασης

Before we learn about the protected access specifier, make sure you know about inheritance in C++.

  • The protected keyword is used to create protected members (data and function).
  • The protected members can be accessed within the class and from the derived class.

Example 3: C++ protected Access Specifier

 #include using namespace std; // declare parent class class Sample ( // protected elements protected: int age; ); // declare child class class SampleChild : public Sample ( public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare object of child class SampleChild child; cout <> ageInput; // call child class function // pass ageInput as argument child.displayAge(ageInput); return 0; )

Output:

 Enter your age: 20 Age = 20

Here, ChildSample is an inherited class that is derived from Sample. The variable age is declared in Sample with the protected keyword.

This means that ChildSample can access age since Sample is its parent class.

We see this as we have assigned the value of age in ChildSample even though age is declared in the Sample class.

Summary: public, private, and protected

  • public elements can be accessed by all other classes and functions.
  • privateΔεν είναι δυνατή η πρόσβαση σε στοιχεία εκτός της κλάσης στην οποία δηλώνονται, εκτός από friendκλάσεις και συναρτήσεις.
  • protectedτα στοιχεία είναι ακριβώς όπως το private, εκτός εάν μπορούν να προσεγγιστούν από παράγωγες τάξεις.
Προσδιοριστές Ιδια τάξη Παράγωγη τάξη Εξωτερική τάξη
public Ναί Ναί Ναί
private Ναί Οχι Οχι
protected Ναί Ναί Οχι

Σημείωση: Από προεπιλογή, τα μέλη της τάξης στο C ++ είναι private, εκτός αν ορίζεται διαφορετικά.

ενδιαφέροντα άρθρα...