polymorphism c
Ο ρόλος του πολυμορφισμού στο C ++ με παραδείγματα.
Ο πολυμορφισμός είναι ένας από τους τέσσερις πυλώνες του αντικειμενοστρεφούς προγραμματισμού. Ο πολυμορφισμός σημαίνει ότι έχει πολλές μορφές. Μπορεί να οριστεί ως η τεχνική με την οποία ένα αντικείμενο μπορεί να λάβει πολλές μορφές ανάλογα με την κατάσταση.
Σε όρους προγραμματισμού, μπορούμε να πούμε ότι ένα αντικείμενο μπορεί να συμπεριφέρεται διαφορετικά σε διαφορετικές συνθήκες.
Σε αυτό το σεμινάριο, θα μάθουμε για τους τύπους του πολυμορφισμού, τους τρόπους εφαρμογής του πολυμορφισμού μαζί με τις διάφορες άλλες έννοιες του πολυμορφισμού λεπτομερώς.
=> Δείτε εδώ για να δείτε τα εκπαιδευτικά μαθήματα A-Z Of C ++ εδώ.
Για παράδειγμα, μια γυναίκα μπορεί να αναλάβει πολλούς ρόλους σε διαφορετικές καταστάσεις. Για ένα παιδί, είναι μητέρα, νοικοκυρά στο σπίτι, εργαζόμενος στο γραφείο κ.λπ. Έτσι, μια γυναίκα αναλαμβάνει διαφορετικούς ρόλους και εμφανίζει διαφορετική συμπεριφορά σε διαφορετικές συνθήκες. Αυτό είναι ένα πραγματικό παράδειγμα πολυμορφισμού.
Ομοίως, στον κόσμο του προγραμματισμού, μπορούμε να έχουμε έναν τελεστή '+' που είναι ο τελεστής δυαδικής προσθήκης που συμπεριφέρεται διαφορετικά όταν αλλάζουν οι τελεστές. Για παράδειγμα, όταν και οι δύο τελεστές είναι αριθμητικοί, εκτελεί προσθήκη.
Από την άλλη πλευρά, όταν οι τελεστές είναι χορδές, ενεργεί ως χειριστής συνένωσης. Έτσι, ο πολυμορφισμός, με λίγα λόγια, σημαίνει μια οντότητα που παίρνει πολλές μορφές ή συμπεριφέρεται διαφορετικά υπό διαφορετικές συνθήκες.
Τι θα μάθετε:
- Τύποι πολυμορφισμού
- Μεταγλώττιση πολυμορφισμού χρόνου εναντίον Πολυμορφισμός χρόνου εκτέλεσης
- Μεταγλώττιση πολυμορφισμού χρόνου
- Λειτουργία υπερφόρτωση
- Υπερφόρτωση χειριστή
- συμπέρασμα
- Συνιστώμενη ανάγνωση
Τύποι πολυμορφισμού
Ο πολυμορφισμός χωρίζεται σε δύο τύπους.
- Συγκέντρωση πολυμορφισμού χρόνου
- Πολυμορφισμός χρόνου εκτέλεσης
Το διάγραμμα που αντιπροσωπεύει αυτό φαίνεται παρακάτω:
Όπως φαίνεται στο παραπάνω διάγραμμα, ο πολυμορφισμός διαιρείται σε πολυμορφισμό χρόνου μεταγλώττισης και πολυμορφισμός χρόνου εκτέλεσης. Ο πολυμορφισμός χρόνου μεταγλώττισης χωρίζεται περαιτέρω σε υπερφόρτωση χειριστή και υπερφόρτωση λειτουργίας. Ο πολυμορφισμός χρόνου εκτέλεσης εφαρμόζεται περαιτέρω χρησιμοποιώντας εικονικές λειτουργίες.
Ο πολυμορφισμός χρόνου μεταγλώττισης είναι επίσης γνωστός ως πρώιμη σύνδεση ή στατικός πολυμορφισμός. Σε αυτόν τον τύπο πολυμορφισμού, η μέθοδος του αντικειμένου καλείται κατά τη στιγμή της μεταγλώττισης. Στην περίπτωση πολυμορφισμού χρόνου εκτέλεσης, η μέθοδος του αντικειμένου επικαλείται κατά το χρόνο εκτέλεσης.
Ο πολυμορφισμός χρόνου εκτέλεσης είναι επίσης γνωστός ως δυναμική ή καθυστερημένη σύνδεση ή δυναμικός πολυμορφισμός. Θα εξετάσουμε τη λεπτομερή εφαρμογή καθεμιάς από αυτές τις τεχνικές στα ακόλουθα θέματα.
Μεταγλώττιση πολυμορφισμού χρόνου εναντίον Πολυμορφισμός χρόνου εκτέλεσης
Ας δούμε τις κύριες διαφορές μεταξύ του χρόνου μεταγλώττισης και του πολυμορφισμού χρόνου εκτέλεσης παρακάτω.
Συγκέντρωση πολυμορφισμού χρόνου | Πολυμορφισμός χρόνου εκτέλεσης |
---|---|
Επίσης γνωστό ως στατικός πολυμορφισμός ή πρώιμη σύνδεση | Επίσης γνωστό ως δυναμικός πολυμορφισμός ή καθυστερημένη / δυναμική σύνδεση |
Η μέθοδος Objects καλείται κατά τη στιγμή της μεταγλώττισης | Η μέθοδος του αντικειμένου καλείται κατά το χρόνο εκτέλεσης |
Συνήθως εφαρμόζεται με υπερφόρτωση χειριστή και υπερφόρτωση λειτουργίας | Υλοποιήθηκε χρησιμοποιώντας εικονικές συναρτήσεις και παράκαμψη μεθόδου |
Η μέθοδος υπερφόρτωση είναι ένας πολυμορφισμός μεταγλώττισης κατά τον οποίο περισσότερες από μία μέθοδοι μπορούν να έχουν το ίδιο όνομα αλλά διαφορετική λίστα παραμέτρων και τύπους. | Η παράκαμψη της μεθόδου είναι ο πολυμορφισμός χρόνου εκτέλεσης όπου περισσότερες από μία μέθοδοι έχουν το ίδιο όνομα με το ίδιο πρωτότυπο |
Δεδομένου ότι οι μέθοδοι είναι γνωστές στο χρόνο μεταγλώττισης, η εκτέλεση είναι ταχύτερη | Η εκτέλεση είναι πιο αργή καθώς η μέθοδος είναι γνωστή κατά το χρόνο εκτέλεσης |
Παρέχετε λιγότερη ευελιξία στην εφαρμογή λύσεων, καθώς όλα πρέπει να είναι γνωστά κατά τη στιγμή της κατάρτισης | Πολύ πιο ευέλικτο για την εφαρμογή σύνθετων λύσεων καθώς οι μέθοδοι αποφασίζονται κατά το χρόνο εκτέλεσης |
Μεταγλώττιση πολυμορφισμού χρόνου
Ο πολυμορφισμός του χρόνου μεταγλώττισης είναι μια τεχνική στην οποία καλείται η μέθοδος ενός αντικειμένου κατά το χρόνο μεταγλώττισης.
Αυτός ο τύπος πολυμορφισμού εφαρμόζεται με δύο τρόπους.
- Υπερφόρτωση λειτουργίας
- Υπερφόρτωση χειριστή
Θα συζητήσουμε λεπτομερώς κάθε τεχνική.
Λειτουργία υπερφόρτωση
Μια συνάρτηση λέγεται ότι είναι υπερφορτωμένη όταν έχουμε περισσότερες από μία συνάρτηση με το ίδιο όνομα αλλά διαφορετικούς τύπους παραμέτρων ή διαφορετικό αριθμό ορισμάτων.
Έτσι, μια συνάρτηση μπορεί να υπερφορτωθεί με βάση τους τύπους παραμέτρων, τη σειρά των παραμέτρων και τον αριθμό των παραμέτρων.
Σημειώστε ότι δύο συναρτήσεις που έχουν το ίδιο όνομα και την ίδια λίστα παραμέτρων, αλλά ο διαφορετικός τύπος επιστροφής δεν είναι μια υπερφορτωμένη συνάρτηση και θα οδηγήσει σε σφάλμα σύνταξης εάν χρησιμοποιηθεί στο πρόγραμμα.
Ομοίως, όταν οι παράμετροι συνάρτησης διαφέρουν μόνο σε δείκτη και εάν ο τύπος πίνακα είναι ισοδύναμος, τότε δεν θα πρέπει να χρησιμοποιείται για υπερφόρτωση.
Άλλοι τύποι όπως στατικός και μη στατικός, σταθερός και πτητικός κ.λπ. Ή δηλώσεις παραμέτρων που διαφέρουν παρουσία ή απουσία προεπιλεγμένων τιμών δεν πρέπει επίσης να χρησιμοποιούνται για υπερφόρτωση, καθώς είναι ισοδύναμες από την άποψη εφαρμογής.
Για παράδειγμα,Τα ακόλουθα πρωτότυπα συνάρτησης είναι υπερφορτωμένες συναρτήσεις.
Add(int,int); Add(int,float); Add(float,int); Add(int,int,int);
Στα παραπάνω πρωτότυπα, βλέπουμε ότι υπερφορτώνουμε τη συνάρτηση Προσθήκη με βάση τον τύπο των παραμέτρων, την ακολουθία ή τη σειρά των παραμέτρων, τον αριθμό των παραμέτρων κ.λπ.
Ας πάρουμε ένα πλήρες παράδειγμα προγραμματισμού για να κατανοήσουμε καλύτερα τη λειτουργία υπερφόρτωσης.
#include #include using namespace std; class Summation { public: int Add(int num1,int num2) { return num1+num2; } int Add(int num1,int num2, int num3) { return num1+num2+num3; } string Add(string s1,string s2){ return s1+s2; } }; int main(void) { Summation obj; cout< Παραγωγή:
35
191
19
Γειά σου Κόσμε
Στο παραπάνω πρόγραμμα, έχουμε μια κλάση Summation που ορίζει τρεις υπερφορτωμένες συναρτήσεις που ονομάζονται Προσθήκη που λαμβάνει δύο ακέραια ορίσματα, τρία ακέραια ορίσματα και δύο ορίσματα συμβολοσειρών.
Στην κύρια λειτουργία, πραγματοποιούμε τέσσερις κλήσεις λειτουργιών που παρέχουν διάφορες παραμέτρους. Οι δύο πρώτες κλήσεις λειτουργίας είναι απλές. Στην τρίτη συνάρτηση συνάρτησης για Προσθήκη, παρέχουμε δύο τιμές κινητής υποδιαστολής ως ορίσματα.
Σε αυτήν την περίπτωση, η συνάρτηση που ταιριάζει είναι int Add (int, int) καθώς εσωτερικά, το float μετατρέπεται σε διπλό και στη συνέχεια ταιριάζει με τη συνάρτηση με τις παραμέτρους int. Εάν είχαμε καθορίσει διπλό αντί για float, τότε θα είχαμε μια άλλη υπερφορτωμένη συνάρτηση με διπλά ως παραμέτρους.
Η τελευταία κλήση συνάρτησης χρησιμοποιεί τιμές συμβολοσειρών ως παραμέτρους. Σε αυτήν την περίπτωση, ο τελεστής Add (+) ενεργεί ως τελεστής συνένωσης και συνδυάζει τις δύο τιμές συμβολοσειράς για να παράγει μία μόνο συμβολοσειρά.
Οφέλη της υπερφόρτωσης λειτουργίας
Το κύριο πλεονέκτημα της υπερφόρτωσης λειτουργίας είναι ότι προωθεί την επαναχρησιμοποίηση κώδικα. Μπορούμε να έχουμε όσο το δυνατόν περισσότερες συναρτήσεις με το ίδιο όνομα, εφόσον είναι υπερφορτωμένες με βάση τον τύπο ορίσματος, την ακολουθία ορίσματος και τον αριθμό των ορισμάτων.
Με αυτόν τον τρόπο γίνεται ευκολότερο να έχουμε διαφορετικές λειτουργίες με το ίδιο όνομα για να αντιπροσωπεύσουμε τη συμπεριφορά της ίδιας λειτουργίας σε διαφορετικές συνθήκες.
Εάν δεν υπήρχε υπερφόρτωση λειτουργιών, τότε θα έπρεπε να γράψουμε πάρα πολλά διαφορετικά είδη λειτουργιών με διαφορετικά ονόματα, καθιστώντας έτσι τον κώδικα δυσανάγνωστο και δύσκολο να προσαρμοστεί.
Ο αλγόριθμος dijkstra java χρησιμοποιεί ουρά προτεραιότητας
Υπερφόρτωση χειριστή
Υπερφόρτωση χειριστή είναι η τεχνική με την οποία δίνουμε διαφορετική σημασία στους υπάρχοντες χειριστές στο C ++. Με άλλα λόγια, υπερφορτώνουμε τους χειριστές για να δώσουμε μια ιδιαίτερη σημασία στους τύπους δεδομένων που καθορίζονται από το χρήστη ως αντικείμενα.
Οι περισσότεροι από τους χειριστές στο C ++ είναι υπερφορτωμένοι ή έχουν ιδιαίτερο νόημα, ώστε να μπορούν να εργαστούν σε τύπους δεδομένων που καθορίζονται από το χρήστη. Σημειώστε ότι κατά την υπερφόρτωση, η βασική λειτουργία των χειριστών δεν μεταβάλλεται. Η υπερφόρτωση δίνει στον χειριστή ένα πρόσθετο νόημα διατηρώντας το βασικό σημασιολογικό του ίδιο.
Αν και οι περισσότεροι από τους χειριστές μπορεί να είναι υπερφορτωμένοι στο C ++, υπάρχουν ορισμένοι χειριστές που δεν μπορούν να υπερφορτωθούν.
Αυτοί οι τελεστές παρατίθενται στον παρακάτω πίνακα.
Χειριστές Τελεστής ανάλυσης πεδίου (: :) Μέγεθος του επιλογέας μέλους (.) επιλογέας δείκτη μέλους (*) τρισδιάστατος χειριστής (? :)
Οι λειτουργίες που χρησιμοποιούμε για την υπερφόρτωση των χειριστών ονομάζονται « Λειτουργίες χειριστή '.
Οι λειτουργίες χειριστή είναι παρόμοιες με τις κανονικές λειτουργίες αλλά με μια διαφορά. Η διαφορά είναι ότι το όνομα των λειτουργιών του χειριστή ξεκινά με τη λέξη-κλειδί « χειριστής Ακολουθούμενο από το σύμβολο χειριστή που πρόκειται να υπερφορτωθεί.
Η λειτουργία χειριστή καλείται στη συνέχεια όταν χρησιμοποιείται ο αντίστοιχος χειριστής στο πρόγραμμα. Αυτές οι λειτουργίες χειριστή μπορεί να είναι λειτουργίες μέλους ή καθολικές μέθοδοι ή ακόμη και λειτουργία φίλου.
Η γενική σύνταξη της λειτουργίας χειριστή είναι:
return_type classname::operator op(parameter list) { //function body }
Εδώ «χειριστής op» είναι η λειτουργία χειριστή όπου ο χειριστής είναι η λέξη-κλειδί και op είναι ο χειριστής που πρέπει να υπερφορτωθεί. Return_type είναι ο τύπος τιμής που θα επιστραφεί.
Ας δούμε μερικά παραδείγματα προγραμματισμού για να δείξουμε την υπερφόρτωση του χειριστή χρησιμοποιώντας τις λειτουργίες του χειριστή.
Παράδειγμα 1:Υπερφόρτωση του unary χειριστή χρησιμοποιώντας τη λειτουργία χειριστή μέλους.
#include using namespace std; class Distance { public: int feet; // Constructor to initialize the object's value Distance(int feet) { this->feet = feet; } //operator function to overload ++ operator to perform increment on Distance obj void operator++() { feet++; } void print(){ cout << '
Incremented Feet value: ' << feet; } }; int main() { Distance d1(9); // Use (++) unary operator ++d1; d1.print(); return 0; }
Παραγωγή:
Αυξημένη τιμή ποδιών: 10
Εδώ έχουμε υπερφορτώσει τον unary φορέα αύξησης χρησιμοποιώντας τη λειτουργία χειριστή ++. Στην κύρια συνάρτηση, χρησιμοποιούμε αυτόν τον τελεστή ++ για να αυξήσουμε το αντικείμενο της κλάσης Απόσταση.
Παράδειγμα 2:Υπερφόρτωση του δυαδικού χειριστή χρησιμοποιώντας τη λειτουργία του χειριστή μέλους.
#include using namespace std; class Complex { int real, imag; public: Complex(int r = 0, int i =0) {real = r; imag = i;} //Operator function to overload binary + to add two complex numbers Complex operator + (Complex const &obj) { Complex c3; c3.real = real + obj.real; c3.imag = imag + obj.imag; return c3; } void print() { cout << real << ' + i' << imag << endl; } }; int main() { Complex c1(2, 5), c2(3, 7); cout<<'c1 = '; c1.print(); cout<<'c2 = '; c2.print(); cout<<'c3 = c1+c2 = '; Complex c3 = c1 + c2; // calls overloaded + operator c3.print(); }
Παραγωγή:
c1 = 2 + i5
c2 = 3 + i7
c3 = c1 + c2 = 5 + i12
Εδώ έχουμε χρησιμοποιήσει το κλασικό παράδειγμα της προσθήκης δύο πολύπλοκων αριθμών χρησιμοποιώντας την υπερφόρτωση του χειριστή. Ορίζουμε μια κλάση που αντιπροσωπεύει τους αριθμούς σύνθετων και μια λειτουργία χειριστή για υπερφόρτωση + χειριστή στην οποία προσθέτουμε τα πραγματικά και φανταστικά μέρη των σύνθετων αριθμών.
Στην κύρια συνάρτηση, δηλώνουμε δύο πολύπλοκα αντικείμενα και τα προσθέτουμε χρησιμοποιώντας τον υπερφορτωμένο χειριστή + για να λάβουμε το επιθυμητό αποτέλεσμα.
Στο παρακάτω παράδειγμα, θα χρησιμοποιήσουμε τη λειτουργία φίλου για να προσθέσουμε δύο πολύπλοκους αριθμούς για να δούμε τη διαφορά στην εφαρμογή.
#include using namespace std; class Complex { int real, imag; public: Complex(int r = 0, int i =0) {real = r; imag = i;} //friend function to overload binary + to add two complex numbers friend Complex operator +(Complex const &, Complex const &); void print() { cout << real << ' + i' << imag << endl; } }; Complex operator + (Complex const &c1, Complex const &c2) { Complex c3; c3.real = c1.real + c2.real; c3.imag = c1.imag + c2.imag; return c3; } int main() { Complex c1(2, 5), c2(3, 7); cout<<'c1 = '; c1.print(); cout<<'c2 = '; c2.print(); cout<<'c3 = c1+c2 = '; Complex c3 = c1 + c2; // calls overloaded + operator c3.print(); }
Παραγωγή:
c1 = 2 + i5
c2 = 3 + i7
c3 = c1 + c2 = 5 + i12
Βλέπουμε ότι η έξοδος του προγράμματος είναι η ίδια. Η μόνη διαφορά στην εφαρμογή είναι η χρήση της συνάρτησης φίλου για την υπερφόρτωση του χειριστή + αντί της συνάρτησης μέλους στην προηγούμενη εφαρμογή.
Όταν η συνάρτηση φίλου χρησιμοποιείται για έναν δυαδικό χειριστή, πρέπει να καθορίσουμε ρητά και τους δύο τελεστές στη συνάρτηση. Ομοίως, όταν ο unary χειριστής είναι υπερφορτωμένος χρησιμοποιώντας τη λειτουργία φίλου, πρέπει να παρέχουμε τον ενιαίο τελεστή στη συνάρτηση.
Εκτός από τις λειτουργίες του χειριστή, μπορούμε επίσης να γράψουμε ένα χειριστής μετατροπής που χρησιμοποιείται για τη μετατροπή από τον ένα τύπο στον άλλο. Αυτοί οι υπερφορτωμένοι τελεστές μετατροπής πρέπει να είναι συνάρτηση μέλους της κλάσης.
Παράδειγμα 3:Υπερφόρτωση χειριστή με χρήση μεταφορέα μετατροπής.
#include using namespace std; class DecFraction { int numerator, denom; public: DecFraction(int num, int denm) { numerator = num; denom = denm; } // conversion operator: converts fraction to float value and returns it operator float() const { return float(numerator) / float(denom); } }; int main() { DecFraction df(3, 5); //object of class float res_val = df; //calls conversion operator cout << 'The resultant value of given fraction (3,5)= '< Παραγωγή:
Η προκύπτουσα τιμή δεδομένου κλάσματος (3,5) = 0,6
Σε αυτό το πρόγραμμα, χρησιμοποιήσαμε τον τελεστή μετατροπής για να μετατρέψουμε το δεδομένο κλάσμα σε τιμή float. Μόλις ολοκληρωθεί η μετατροπή, ο τελεστής μετατροπής επιστρέφει την προκύπτουσα τιμή στον καλούντα.
Στην κύρια συνάρτηση, όταν αντιστοιχίζουμε το αντικείμενο df σε μια μεταβλητή res_val, η μετατροπή πραγματοποιείται και το αποτέλεσμα αποθηκεύεται στο res_val.
Μπορούμε επίσης να καλέσουμε έναν κατασκευαστή με ένα μόνο όρισμα. Όταν μπορούμε να καλέσουμε έναν κατασκευαστή από την τάξη χρησιμοποιώντας ένα μόνο όρισμα, αυτό ονομάζεται ' μετατροπή οικοδόμος '. Ο κατασκευαστής μετατροπής μπορεί να χρησιμοποιηθεί για σιωπηρή μετατροπή στην κατηγορία που κατασκευάζεται.
#include using namespace std; class Point { private: int x,y; public: Point(int i=0,int j=0) {x = i;y=j;} void print() { cout<<' x = '< Παραγωγή:
Σημείο κατασκευασμένο χρησιμοποιώντας κανονικό κατασκευαστή
x = 20 y = 30
Σημείο που κατασκευάστηκε χρησιμοποιώντας κατασκευαστή μετατροπής
x = 10 y = 0
Εδώ έχουμε ένα σημείο κλάσης που ορίζει έναν κατασκευαστή με προεπιλεγμένες τιμές. Στην κύρια συνάρτηση, κατασκευάζουμε ένα αντικείμενο pt με συντεταγμένες x και y. Στη συνέχεια, απλώς ορίζουμε pt μια τιμή 10. Εδώ καλείται ο κατασκευαστής μετατροπής και στο x εκχωρείται μια τιμή 10 ενώ στο y δίνεται η προεπιλεγμένη τιμή 0.
Κανόνες υπερφόρτωσης χειριστή
Κατά την εκτέλεση υπερφόρτωσης χειριστή, πρέπει να προσέξουμε τους παρακάτω κανόνες.
η προεπιλεγμένη πύλη δεν είναι διαθέσιμη τα Windows 10 συνεχίζουν να συμβαίνουν
- Στο C ++, μπορούμε να υπερφορτώσουμε μόνο τους υπάρχοντες χειριστές. Οι φορείς που προστέθηκαν πρόσφατα δεν μπορούν να υπερφορτωθούν.
- Όταν οι χειριστές είναι υπερφορτωμένοι, πρέπει να διασφαλίσουμε ότι τουλάχιστον ένας από τους τελεστές είναι τύπου που καθορίζεται από το χρήστη.
- Για να υπερφορτώσουμε συγκεκριμένους χειριστές, μπορούμε επίσης να χρησιμοποιήσουμε τη λειτουργία φίλου.
- Όταν υπερφορτώνουμε τους unary τελεστές χρησιμοποιώντας μια συνάρτηση μέλους, δεν λαμβάνει ρητά επιχειρήματα. Χρειάζεται ένα ρητό επιχείρημα όταν ο unary τελεστής υπερφορτώνεται χρησιμοποιώντας τη λειτουργία φίλου.
- Ομοίως, όταν οι δυαδικοί χειριστές είναι υπερφορτωμένοι χρησιμοποιώντας τη συνάρτηση μέλους, πρέπει να παρέχουμε ένα ρητό όρισμα στη συνάρτηση. Όταν οι δυαδικοί τελεστές είναι υπερφορτωμένοι χρησιμοποιώντας τη λειτουργία φίλου, η συνάρτηση παίρνει δύο ορίσματα.
- Υπάρχουν δύο τελεστές στο C ++ που είναι ήδη υπερφορτωμένοι. Αυτά είναι '=' και '&'. Επομένως, για να αντιγράψουμε ένα αντικείμενο της ίδιας κλάσης, δεν χρειάζεται να υπερφορτώσουμε τον τελεστή = και μπορούμε να το χρησιμοποιήσουμε απευθείας.
Πλεονεκτήματα της υπερφόρτωσης χειριστή
Η υπερφόρτωση χειριστή στο C ++ μας επιτρέπει να επεκτείνουμε τη λειτουργικότητα των χειριστών στους τύπους που καθορίζονται από το χρήστη, συμπεριλαμβανομένων των αντικειμένων κλάσης, εκτός από τους ενσωματωμένους τύπους.
Επεκτείνοντας τη λειτουργικότητα του χειριστή στους τύπους που καθορίζονται από το χρήστη, δεν χρειάζεται να γράψουμε σύνθετο κώδικα για να εκτελέσουμε διάφορες λειτουργίες σε τύπους που καθορίζονται από το χρήστη, αλλά, μπορούμε να το κάνουμε σε μία λειτουργία, όπως ακριβώς οι ενσωματωμένοι τύποι.
συμπέρασμα
Ο πολυμορφισμός χρόνου μεταγλώττισης παρέχει δυνατότητα υπερφόρτωσης κυρίως για την επέκταση της λειτουργικότητας του κώδικα όσον αφορά την υπερφόρτωση λειτουργίας και την υπερφόρτωση χειριστή.
Μέσω της υπερφόρτωσης λειτουργίας, μπορούμε να γράψουμε περισσότερες από μία συνάρτηση με το ίδιο όνομα αλλά διαφορετικές παραμέτρους και τύπους. Αυτό καθιστά τον κώδικα απλό και ευανάγνωστο. Με υπερφόρτωση χειριστή, μπορούμε να επεκτείνουμε τη λειτουργικότητα των χειριστών, ώστε να μπορούμε να κάνουμε βασικές λειτουργίες και σε τύπους που καθορίζονται από το χρήστη.
Στο επερχόμενο σεμινάριό μας, θα μάθουμε περισσότερα για τον πολυμορφισμό χρόνου εκτέλεσης στο C ++.
=> Διαβάστε το The Easy C ++ Training Series.
Συνιστώμενη ανάγνωση
- Πολυμορφισμός χρόνου εκτέλεσης σε C ++
- Λειτουργίες φίλων στο C ++
- Επανάληψη σε C ++
- Εκπαιδευτικό πρόγραμμα Python Main Function με πρακτικά παραδείγματα
- Μια πλήρης επισκόπηση του C ++
- Tutorial QTP # 21 - Πώς να κάνετε τις δοκιμές QTP Modular και επαναχρησιμοποιήσιμες χρησιμοποιώντας βιβλιοθήκες ενεργειών και λειτουργιών
- Tutorial Unix Pipes: Pipes in Unix Programming
- Λειτουργίες βιβλιοθήκης στο C ++