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

Προχωρήσατε και καταλήξατε στο ακόλουθο αρχείο κεφαλίδας.

double calculateAreaCircle(double radius);
int calculateAreaSquare(int sideLength);
int calculateAreaRectangle(int length, int breadth);

Έχετε γράψει μια λύση που λειτουργεί, αλλά δεν είστε ικανοποιημένοι με το σχέδιο. Μία από τις κύριες ανησυχίες σας είναι τα ονόματα των συναρτήσεων, και δικαίως — θα ήταν εφιάλτης για τους χρήστες της βιβλιοθήκης να θυμούνται όλα αυτά τα διαφορετικά ονόματα. Αλλά μην φοβάστε, μια λύση βρίσκεται στο χέρι: μετά από λίγη έρευνα, ανακαλύπτετε τον τέλειο τρόπο για να αντιμετωπίσετε όλες τις ανησυχίες σας — Υπερφόρτωση λειτουργιών.

Τι είναι οι υπερφορτωμένες λειτουργίες;

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

Αξιοποιώντας τη δύναμη της υπερφόρτωσης λειτουργιών, μπορείτε να δημιουργήσετε μια πολύ πιο κομψή και φιλική προς το χρήστη διεπαφή για τις λειτουργίες περιοχής στη βιβλιοθήκη σας. Με την υπερφόρτωση συναρτήσεων, ο κώδικάς σας μπορεί να χειριστεί μια ποικιλία διαφορετικών ορισμάτων με απρόσκοπτο και διαισθητικό τρόπο, εξοικονομώντας χρόνο και πονοκεφάλους στους χρήστες.

Έτσι φαίνεται τώρα το αρχείο κεφαλίδας.

double calculateArea(double radius);
int calculateArea(int sideLength);
int calculateArea(int length, int breadth);

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

Σημείωση: Δεν είναι δυνατή η υπερφόρτωση δύο συναρτήσεων που έχουν την ίδια υπογραφή αλλά διαφορετικούς τύπους επιστροφής.

Προεπιλεγμένες παράμετροι ως υπερφόρτωση συνάρτησης

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

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

Εάν βρήκατε αυτό το ιστολόγιο χρήσιμο, σας ενθαρρύνω να δείτε τα άλλα ιστολόγια της σειράς μου "in C++" και να με ακολουθήσετε στο "Twitter" για περισσότερες εξαιρετικές συμβουλές κωδικοποίησης και κόλπα.

Εάν σας άρεσε το περιεχόμενο, εξετάστε το ενδεχόμενο να χειροκροτήσετε και να το μοιραστείτε με τους συναδέλφους σας προγραμματιστές. Ευχαριστούμε που το διαβάσατε! 🙂