Μόλις ένας προγραμματιστής δηλώνει μια μέθοδο , η ονομασία αυτή συνήθως δεν μπορεί να ορίσει άλλη μέθοδο με διαφορετικό κωδικό στο εσωτερικό του. Η εξαίρεση σε αυτό είναι όταν τα επιχειρήματα της μεθόδου διαφέρουν . Για παράδειγμα , ένας προγραμματιστής μπορεί να καθορίσει τη μέθοδο "υπολογίσει " να πάρουν έναν ακέραιο ως επιχείρημα :
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 .
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα