Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> C /C + + Προγραμματισμός

Επαναπροσδιορίστε Methods in C + +

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

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

int υπολογισμό ( int x )

Σύμφωνα με τους κανόνες της C + + , μια άλλη μέθοδος που ονομάζεται " υπολογίζει " η οποία λαμβάνει έναν ακέραιο ως επιχείρημα , δεν θα μπορούσαν να υπάρχουν , ανεξαρτήτως του κώδικα μέσα στη μέθοδο . Όμως , μια άλλη μέθοδος με το ίδιο όνομα και διαφορετικά επιχειρήματα θα μπορούσαν να υπάρχουν :

int υπολογισμό ( double x )

Ο τύπος ή επιχειρήματος , όταν η μέθοδος αυτή καλείται να αποφασίσει ποια μέθοδος εκτελεί
.
Η Περιορισμοί
Η

Περιορισμοί υπάρχουν ως προς το πώς λειτουργεί η μέθοδος υπερφόρτωσης σε C + + . Για να υπερφορτώσει ένα όνομα μεθόδου , ​​τα επιχειρήματα πρέπει να χρησιμοποιούν διαφορετικούς τύπους δεδομένων , ή να διαφέρουν ως προς την ποσότητα των επιχειρημάτων που ορίζεται . Μέθοδοι που επιστρέφουν διαφορετικές τιμές , αλλά μοιράζονται ένα όνομα και ταυτόσημο κατάλογο επιχείρημα , δεν επιτρέπονται σε C + + . Μέθοδοι με τα ίδια ονόματα και τα επιχειρήματα που διαφέρουν μόνο λόγω της διαφορετικής όνομα του τύπου ( ή δίνοντας μια υπάρχουσα τύπο δεδομένων διαφορετικό όνομα ) επίσης δεν επιτρέπεται . Για παράδειγμα :

typdef int fake_int ?

Int write ( int x )

διπλής εγγραφής ( int x )

int write ( fake_int x )

Κανείς από τους τρεις ορισμούς μέθοδο ακολουθούν τους κανόνες της μεθόδου υπερφόρτωσης και θα επιστρέψει ένα μήνυμα σφάλματος .

Η Παραγωγή
Η

ένας άλλος τρόπος για να υπερφορτώσει ένα μέθοδος είναι μέσω της κλάσης παραγωγή . Κατά την κατασκευή τάξη , ένας προγραμματιστής μπορεί να κάνει μια λειτουργία κατηγορίας κληρονομήσει από άλλη κατηγορία . Η κληρονομεί ( προέρχεται ) τάξη μπορεί να χρησιμοποιήσει τις μεθόδους της κλάσης που κληρονομεί από ( κλάση βάσης ) . Μια βασική κλάση ( κλάση X ) θα μπορούσε να έχει μια μέθοδο "print" ορίζεται . Μια άλλη κατηγορία ( κλάση Y ), η οποία προέρχεται από την κατηγορία X έχει επίσης πρόσβαση σε λειτουργίες εκτύπωσης . Ωστόσο, η κλάση Υ θα μπορούσε επίσης να καθορίσει τη δική του εκδοχή της μεθόδου εκτύπωσης . Σε αυτή την περίπτωση, η μέθοδος εκτύπωσης θα εκτελεστεί θα είναι εκείνος που ορίζεται στην κατηγορία Υ , εκτός αν ο προγραμματιστής ορίζει ότι η κλάση X έκδοση της εκτύπωσης θα πρέπει να εκτελέσει .
Εικόνων Παραδείγματα
Η

ένα παράδειγμα μιας μεθόδου επαναπροσδιορίζεται μέσα από μια παραγόμενη κλάση περιλαμβάνει δύο κατηγορίες . Πρώτον, η βασική κλάση :

Πρώτης θέσης (

δημόσια :

int x ?

Int returnX ( ) {

επιστροφή x ?

}

} ?

Στη συνέχεια , μια παραγόμενη κλάση που επαναπροσδιορίζει τον " returnX ( ) " μέθοδος :

τάξη Δεύτερον : Πρώτη δημόσια {

δημόσια :

int returnX ( ) {

επιστρέψει x +1 ?

}

} ?

η κατηγορία " Β" έχει πρόσβαση στη μεταβλητή "x " και η μέθοδος " returnX ( ) " , που αποτελούν μέρος της κατηγορίας «Πρώτο» . Ωστόσο , Δεύτερη μέθοδος επαναπροσδιορίζει το returnX ( ) σε δικό της ορισμό. Αυτό σημαίνει ότι όταν ένα αντικείμενο της κλάσης Δεύτερη καλεί την returnX (μέθοδος ) , η τιμή που επιστρέφεται θα πρέπει να είναι x +1 .
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα