Λειτουργία Υπερφόρτωση σε C ++: Όλα όσα πρέπει να γνωρίζετε

Αυτό το άρθρο θα σας παράσχει μια λεπτομερή και περιεκτική γνώση της λειτουργίας υπερφόρτωσης στο C ++ με πολλά παραδείγματα που πρέπει να κατανοήσετε.

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



Υπερφόρτωση C ++

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

  • μέθοδοι,
  • κατασκευαστές και
  • ευρετηριασμένες ιδιότητες

Τύποι υπερφόρτωσης σε C ++

types-of-overloading-in-c++

Τι είναι η υπερφόρτωση λειτουργίας στο C ++;

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



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

Αλλάζοντας τον αριθμό των επιχειρημάτων

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

// ορισμός πρώτης συνάρτησης int add (int a, int b) {cout<< a+b } // second overloaded function definition int add(int a, int b, int c) { cout << a+b+c }

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



int main () {add (10, 20) // add () με 2 παράμετρος θα ονομάζεται add (10, 20, 30) // sum () με 3 παράμετρος θα καλείται}
# συμπερίληψη χρησιμοποιώντας χώρο ονομάτων std int add (int a, int b) {cout<< a+b <

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

Έχοντας διαφορετικούς τύπους επιχειρημάτων

Σε αυτήν τη μέθοδο, ορίζουμε δύο ή περισσότερες συναρτήσεις με το ίδιο όνομα και τον ίδιο αριθμό παραμέτρων, αλλά ο τύπος δεδομένων που χρησιμοποιείται για αυτές τις παραμέτρους είναι διαφορετικός. Για παράδειγμα σε αυτό το πρόγραμμα, έχουμε τρεις συνάρτηση add (), η πρώτη παίρνει δύο ακέραια ορίσματα, η δεύτερη παίρνει δύο float ορίσματα και η τρίτη παίρνει δύο διπλά ορίσματα.

#include χρησιμοποιώντας το namespace std int add (int x, int y) // πρώτος ορισμός {cout<< x+y << endl return 0 } float add(float a, float b) { cout << a+b << endl return 0 } double add(double x, double y) { cout << x+y << endl return 0 } int main() { add(20, 40) add(23.45f, 34.5f) add(40.24, 20.433) }

Στο παραπάνω παράδειγμα, ορίζουμε τη συνάρτηση add () τρεις φορές. Πρώτα χρησιμοποιώντας ακέραιοι ως παράμετροι, δεύτερος χρησιμοποιώντας float ως παράμετροι και τρίτος χρησιμοποιώντας διπλό ως παράμετρο
Έτσι παρακάμπτουμε τη συνάρτηση προσθήκης () δύο φορές.

πώς να χρησιμοποιήσετε έναν επαναληπτικό

Πλεονεκτήματα της λειτουργίας Υπερφόρτωση σε C ++

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

  • Με την έννοια της λειτουργίας υπερφόρτωσης, μπορούμε να αναπτύξουμε περισσότερες από μία λειτουργίες με το ίδιο όνομα

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

  • Η λειτουργία υπερφόρτωσης επιταχύνει την εκτέλεση του προγράμματος.

  • Η υπερφόρτωση λειτουργίας χρησιμοποιείται για επαναχρησιμοποίηση κώδικα και επίσης για εξοικονόμηση μνήμης.

  • Βοηθά την εφαρμογή να φορτώσει τη μέθοδο κλάσης με βάση τον τύπο της παραμέτρου.

  • Η συντήρηση κώδικα είναι εύκολη.

Μειονεκτήματα της λειτουργίας Υπερφόρτωση σε C ++

  • Οι δηλώσεις συναρτήσεων που διαφέρουν μόνο από τον τύπο επιστροφής της δεν μπορούν να υπερφορτωθούν με τη διαδικασία υπερφόρτωσης λειτουργίας.
  • Οι δηλώσεις συνάρτησης μέλους με τις ίδιες παραμέτρους ή τους ίδιους τύπους ονομάτων δεν μπορούν να υπερφορτωθούν εάν κάποια από αυτές δηλωθεί ως συνάρτηση στατικού μέλους.
  • κλάση XYZ {static void func () void func () // error}

Λειτουργία υπερφόρτωση και ασάφεια

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

τι είναι η μαριονέτα στους devops
  • Τύπος μετατροπής.
  • Λειτουργία με προεπιλεγμένα ορίσματα.
  • Λειτουργία με πάσο με αναφορά

Τύπος μετατροπής:

# συμπερίληψη χρησιμοποιώντας τη λειτουργία namespace std void (float) void function (int) void function (float x) {std :: cout<< 'Value of x is : ' <

Το παραπάνω παράδειγμα ρίχνει ένα σφάλμα - 'η κλήση υπερφόρτωσης' η λειτουργία (διπλή) 'είναι ασαφής'. Η συνάρτηση (3.4) θα καλέσει την πρώτη συνάρτηση. Η συνάρτηση (34) καλεί τη δεύτερη συνάρτηση σύμφωνα με την πρόβλεψή μας. Αλλά αυτό δεν συμβαίνει επειδή στο C ++ όλες οι σταθερές κινητής υποδιαστολής αντιμετωπίζονται ως διπλές όχι ως πλωτήρες. Εάν αντικαταστήσουμε τη μεταβλητή float σε μια διπλή μεταβλητή, το πρόγραμμα θα λειτουργήσει καλά. Επομένως, αυτό το ονομάζουμε σφάλμα μετατροπής τύπου από float to double.

Λειτουργία με προεπιλεγμένα επιχειρήματα:

# συμπερίληψη χρησιμοποιώντας τη λειτουργία namespace std void function (int) void function (int, int) void function (int x) {std :: cout<< 'Value of x is : ' <

Το παραπάνω παράδειγμα δίνει ένα σφάλμα που λέει ότι 'η κλήση υπερφόρτωσης' fun (int) 'είναι διφορούμενη', αυτό συμβαίνει επειδή η συνάρτηση (int y, int z = 12) μπορεί να κληθεί με δύο τρόπους:

  1. Καλώντας τη συνάρτηση με ένα όρισμα (και θα πάρει αυτόματα την τιμή του z = 12)
  2. Καλώντας τη συνάρτηση με δύο ορίσματα.

Όταν καλούμε τη συνάρτηση: συνάρτηση (12) γεμίζουμε πλήρως την κατάσταση της συνάρτησης και της συνάρτησης (int) και της συνάρτησης (int, int), έτσι ο μεταγλωττιστής μπαίνει σε μια ασάφεια δείχνει ένα σφάλμα.

Λειτουργία με παραπομπή

# συμπερίληψη με χρήση χώρου ονομάτων συνάρτηση κενής λειτουργίας (int) συνάρτηση κενού (int &) λειτουργία κενής (int a) {std :: cout<< 'Value of a is : ' < 

Το παραπάνω πρόγραμμα δίνει ένα σφάλμα που λέει ότι 'η κλήση υπερφόρτωσης' fun (int &) 'είναι διφορούμενη'. Όπως βλέπουμε η πρώτη συνάρτηση παίρνει ένα ακέραιο όρισμα και η δεύτερη συνάρτηση παίρνει μια παράμετρο αναφοράς ως όρισμα. Σε αυτήν την περίπτωση, ο μεταγλωττιστής δεν είναι σε θέση να καταλάβει ποια λειτουργία απαιτείται από τον χρήστη, καθώς δεν υπάρχει συντακτική διαφορά μεταξύ της διασκέδασης (int) και της διασκέδασης (int &), επομένως πυροβολεί ένα σφάλμα ασάφειας.

Με αυτό, φτάνουμε στο τέλος αυτής της λειτουργίας υπερφόρτωσης στο C ++. Εάν θέλετε να μάθετε περισσότερα, δείτε το από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία μάθησης. Το μάθημα εκπαίδευσης και πιστοποίησης Java J2EE και SOA της Edureka έχει σχεδιαστεί για να σας εκπαιδεύσει τόσο για βασικές όσο και για προχωρημένες ιδέες Java μαζί με διάφορα πλαίσια Java όπως το Hibernate & Spring

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του ιστολογίου και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.