Το χαρακτηριστικό φίλων, είτε χρησιμοποιείται από τη συνάρτηση είτε από την κλάση, μπορεί να έχει αρνητικό αντίκτυπο στο αντικειμενοστραφικό πλαίσιο, καθώς αποδυναμώνει την ενθυλάκωση που είναι ενάντια στο παραδειγματικό προσανατολισμό . Αυτός είναι ο λόγος που το χαρακτηριστικό φίλου πρέπει να χρησιμοποιηθεί με σύνεση, διαφορετικά θα μπορούσε να σπάσει τα δεδομένα που κρύβονται στον κώδικα.
Αυτό το φίλο χαρακτηριστικό δεν είναι ούτε μεταβλητό ούτε μεταβατικό . X είναι φίλος του Y δεν συμπεραίνει ότι Y είναι επίσης φίλος του X. Αν X είναι φίλος του Y και Y είναι φίλος του Z, δεν εμπλέκει ότι το X είναι φίλος του Z.
Συγκριτικό διάγραμμα
Βάση σύγκρισης | Λειτουργία φίλου | Κατηγορία φίλων |
---|---|---|
Βασικός | Είναι μια συνάρτηση που χρησιμοποιείται με μια λέξη-κλειδί φίλου για να παραχωρήσει πρόσβαση σε μια μη-μέλος λειτουργία στα ιδιωτικά μέλη μιας τάξης. | Είναι μια τάξη που χρησιμοποιείται με μια λέξη-κλειδί φίλου για πρόσβαση στα ιδιωτικά μέλη μιας άλλης τάξης. |
Προώθηση της δήλωσης | Πρέπει να χρησιμοποιηθεί. | Δεν είναι υποχρεωτικό. |
Χρήση | Μια λειτουργία φίλων μπορεί να χρησιμοποιηθεί σε κάποια κατάσταση υπερφόρτωσης του χειριστή. | Μια τάξη φίλων μπορεί να χρησιμοποιηθεί όταν μια τάξη δημιουργείται στην κορυφή μιας άλλης τάξης. |
Ορισμός της λειτουργίας του φίλου
Η λειτουργία φίλων χρησιμοποιείται για την πρόσβαση στα ιδιωτικά και προστατευμένα μέλη μιας τάξης, επιτρέποντας στη λειτουργία που δεν είναι μέλος να αποκτήσει πρόσβαση. Σε αυτόν τον τύπο λειτουργίας, μια λέξη-κλειδί φίλου χρησιμοποιείται πριν από το όνομα της λειτουργίας κατά τη στιγμή της δήλωσης. Υπάρχουν ορισμένες περιοριστικές συνθήκες που εφαρμόζονται στη λειτουργία φίλων. Η πρώτη προϋπόθεση είναι ότι η λειτουργία φίλων δεν κληρονομείται από τάξη παιδιών. Η δεύτερη προϋπόθεση είναι ότι ο προσδιοριστής κλάσης αποθήκευσης μπορεί να μην υπάρχει στη λειτουργία φίλων, πράγμα που σημαίνει ότι δεν μπορεί να δηλωθεί ως στατικός και εξωτερικός.
Η λειτουργία φίλου δεν καλείται με αντικείμενο επικλήσεως της κλάσης. Τα παραδείγματα της λειτουργίας φίλων είναι: μια παγκόσμια συνάρτηση, μια λειτουργία μέλους μιας κλάσης, ένα πρότυπο λειτουργίας μπορεί να είναι μια λειτουργία φίλου. Ας το καταλάβουμε με τη βοήθεια ενός παραδείγματος.
#include using namespace std; class πρώτη {int δεδομένα? δημόσιο: πρώτο (int i): δεδομένα (i) {} φίλος void display (const πρώτα & α); }, κενή εμφάνιση (const πρώτα & α) {cout << "data =" <Ορισμός της κατηγορίας φίλων
Παρόμοια με τη λειτουργία φίλων μπορούμε να κάνουμε μια τάξη να είναι φίλος μιας άλλης τάξης που αναφέρεται ως τάξη φίλων . Για να μπορέσει η τάξη φίλων να αποκτήσει πρόσβαση σε ιδιωτικά μέλη που ορίζονται στην άλλη τάξη. Είναι σημαντικό να θυμόμαστε ότι η τάξη φίλων μπορεί να έχει πρόσβαση μόνο στα ονόματα που ορίζονται στην άλλη τάξη αντί να κληροδοτήσει άλλη τάξη. Ακριβώς, τα μέλη της πρώτης τάξης δεν μπορούν να γίνουν μέλη της τάξης φίλων. Αυτές οι τάξεις φίλων σπάνια χρησιμοποιούνται.
Η τάξη φίλων μπορεί να δηλωθεί σε περισσότερες από μία τάξεις. Θεωρείται ως μια σύντομη εναλλακτική μέθοδος για τη λειτουργία φίλων, διότι με τη βοήθεια αυτού μπορούμε να δημιουργήσουμε μια τάξη φίλων που να έχει πρόσβαση σε όλα τα μέλη δεδομένων και να λειτουργεί αντί να δημιουργεί πολλαπλές λειτουργίες φίλων.
#include using namespace std; τάξη Πρώτη {// Δηλώστε μια τάξη φίλων τάξη φίλων Δεύτερη? δημόσια: Πρώτη (): a (0) {} άκυρη εκτύπωση () {cout << "Το αποτέλεσμα είναι" << a << endl; } ιδιωτικό: int a; }, class Second {public: void change (Πρώτο & yclass, int x) {yclass.a = x; }}. int main () // Output Το αποτέλεσμα είναι 0 Το αποτέλεσμα είναι 5Βασικές διαφορές μεταξύ της λειτουργίας φίλου και της κατηγορίας φίλων
- Η λειτουργία φίλων είναι μια λειτουργία που μπορεί να έχει πρόσβαση σε ιδιωτικά και προστατευμένα μέλη μιας τάξης. Αντίθετα, μια τάξη φίλων είναι μια τάξη που βοηθά στην πρόσβαση στα ιδιωτικά μέλη μιας τάξης.
- Μια λειτουργία φίλων δηλώνεται με την ενσωμάτωση του πρωτοτύπου της μέσα στην τάξη, πριν από αυτή με τη λέξη-κλειδί φίλο. Ομοίως, μια τάξη φίλων ορίζεται επίσης με χρήση φίλου λέξης-κλειδιού.
- Η μπροστινή δήλωση χρησιμοποιείται σε περίπτωση λειτουργίας φίλων, δεν είναι απαραίτητη η χρήση της σε τάξη φίλων.
συμπέρασμα
Απαιτείται μια λειτουργία φίλου όταν μια λειτουργία χρειάζεται να έχει πρόσβαση σε δύο ή περισσότερες ανεξάρτητες τάξεις, εσωτερικά μέλη. Από την άλλη πλευρά, μια τάξη φίλων απαιτείται όταν μια τάξη απαιτεί την πρόσβαση στα μέλη μιας άλλης τάξης. Όταν μια λειτουργία πολλαπλών μελών πρέπει να είναι φίλος αυτής της λειτουργίας, στην περίπτωση αυτή, είναι καλύτερο να χρησιμοποιήσετε τάξη φίλων.