Συνιστάται, 2024

Επιλογή Συντάκτη

Διαφορά μεταξύ ιδιωτικού και προστατευμένου σε C ++

Υπάρχουν τρεις τύποι προστασίας πρόσβασης που ορίζονται στη γλώσσα προγραμματισμού C ++ για την απόκρυψη των δεδομένων. Η απόκρυψη δεδομένων αποτελεί ουσιαστικό μέρος του αντικειμενοστρεφούς προγραμματισμού. Οι ιδιωτικές και προστατευμένες λέξεις-κλειδιά προσφέρουν το επίπεδο προστασίας πρόσβασης για την απόκρυψη δεδομένων και λειτουργιών μέσα σε μια τάξη. Τα ιδιωτικά μέλη δεν μπορούν να κληρονομηθούν, ενώ το προστατευόμενο μέλος μπορεί να κληρονομηθεί αλλά σε περιορισμένο εύρος. Αυτοί οι προσδιοριστές υποδεικνύουν την προβολή των μελών, όπου ο ιδιωτικός τομέας είναι πιο περιοριστικός από τον προστατευόμενο.

Συγκριτικό διάγραμμα

Βάση σύγκρισηςΙδιωτικόςΠροστασία
Κληρονομική ιδιοκτησία στην κλάση που προκύπτει
Η παράγωγη κλάση δεν έχει πρόσβαση στα ιδιωτικά μέλη κατηγορίας βάσης.Η παράγωγη κλάση μπορεί να έχει πρόσβαση σε προστατευμένα μέλη κατηγορίας βάσης.
Προσιτότητα
Τα ιδιωτικά μέλη της τάξης είναι απροσπέλαστα εκτός του πεδίου της τάξης.Τα προστατευμένα μέλη της τάξης είναι απροσπέλαστα εκτός του πεδίου της τάξης εκτός από την κατηγορία που προέρχεται αμέσως.
Προσβάσιμο από τη δική του τάξηΝαίΝαί
Προσβάσιμο από την παράγωγη κλάσηΟχιΝαί
Προσβάσιμο από το εξωτερικόΟχιΟχι

Ορισμός ιδιωτικού

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

Το πρόγραμμα C ++ παρουσιάζει την ιδέα των προσδιοριστών ιδιωτικής πρόσβασης.

 #include using namespace std; κλάση A {ιδιωτική: int i; δημόσια: void get () {cout <> i; }}. κλάση B: δημόσια A {public: void show () {i ++; cout << "\ n Ο αριθμός που καταχωρίσατε μετά την incrementcpp"> # συμπεριλαμβάνεται χρησιμοποιώντας το χώρο ονομάτων std; class mamap {public: void mammalMethod (void) {cout << "Εμπίπτει στην κατηγορία των θηλαστικών." < 

Στο προαναφερθέν πρόγραμμα, ένα αντικείμενο της κλάσης παιδιού δημιουργείται με το όνομα "ob" και η συνάρτηση μέλους της γονικής κλάσης μπορεί να προσπελαστεί μέσω κλήσης μεθόδου κλάσης παιδιού "marine_mammalMethod". Παρόλο που δεν είναι δυνατή η άμεση πρόσβαση στη γονική μέθοδο με το αντικείμενο "ob".

Ορισμός προστατευόμενου

Τα μέλη της τάξης που δηλώνονται ως προστατευόμενα σε μια τάξη μπορούν να έχουν πρόσβαση μόνο μέσω της λειτουργίας των μελών και της λειτουργίας φίλων της τάξης. Αυτά τα προστατευμένα μέλη δεν μπορούν να αποκτήσουν πρόσβαση εκτός της κλάσης εκτός από την κατηγορία παιδιού (που αμέσως προέρχεται από αυτήν). Εξυπηρετεί τον περιορισμένο σκοπό στην κληρονομιά και κληρονομεί τις ιδιότητες με περιορισμένο τρόπο.

Το παρακάτω πρόγραμμα C ++ απεικονίζει την έννοια των προστατευόμενων προσδιοριστών πρόσβασης.

 #include using namespace std; (int a, int b) {x = a; int = int; int = int; y = b; } άκυρη εμφάνιση () {cout < 

Στο παραπάνω παράδειγμα, η κλάση παιδιών κληρονομεί τις ιδιότητες της βασικής κλάσης επειδή τα στοιχεία δεδομένων δηλώνονται ως δημόσια ή προστατευμένα. Δεν θα ήταν εφικτό αν τα x και y είχαν δηλωθεί ως ιδιωτικά στη βασική κατηγορία.

Βασικές διαφορές μεταξύ ιδιωτικού και προστατευμένου σε C ++

  1. Η προστατευμένη λέξη-κλειδί μπορεί να χρησιμοποιηθεί για την οικοδόμηση μελών της τάξης που είναι ιδιωτικά στην τάξη τους, αλλά μπορούν να κληρονομηθούν και να χρησιμοποιηθούν από την παράγωγη κλάση. Αντίθετα, αυτό δεν είναι δυνατό κατά τη χρήση του ιδιωτικού, επειδή τα ιδιωτικά μέλη δεν μπορούν να κληρονομηθούν απευθείας στην κλάση που προκύπτει.
  2. Όταν η βασική κλάση κληρονομείται με τον προσδιορισμό ιδιωτικής πρόσβασης, δημιουργεί όλα τα δημόσια και προστατευμένα μέλη της βασικής κλάσης, τα ιδιωτικά μέλη της παράγωγης κλάσης. Αντιθέτως, αυτό δεν ισχύει για τους προστατευόμενους προσδιοριστές πρόσβασης.

συμπέρασμα

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

Top