Βίντεο: switch 2025
Η τυπική βιβλιοθήκη C ++ παρέχει ένα πλήρες σύνολο μαθηματικών, χρονικών, εισόδου / εξόδου και λειτουργιών DOS, για να αναφέρουμε μόνο μερικά. Πολλά από τα πρώιμα προγράμματα που μαθαίνετε ως αρχάριοι χρησιμοποιούν τις λεγόμενες λειτουργίες συμβολοσειρών χαρακτήρων που ορίζονται στις συμβολοσειρές αρχείων συμπεριλαμβάνουν .
Οι τύποι παραδειγμάτων για πολλές από αυτές τις λειτουργίες είναι σταθεροί. Για παράδειγμα, και τα δύο επιχειρήματα στο strcpy (char *, char *) πρέπει να είναι ένας δείκτης σε μια συμβολοσειρά χαρακτήρων με μηδενικό τερματισμό - τίποτα άλλο δεν έχει νόημα.
Υπάρχουν λειτουργίες που ισχύουν για πολλούς τύπους. Εξετάστε το παράδειγμα της λειτουργίας lowly maximum (), η οποία επιστρέφει το μέγιστο των δύο παραμέτρων. Όλες οι ακόλουθες παραλλαγές έχουν νόημα:
int μέγιστο (int n1, int n2); // επιστρέφει το μέγιστο των δύο ακέραιων αριθμών μέγιστου υπογεγραμμένου (μη υπογεγραμμένο u1, μη υπογεγραμμένο u2). διπλό μέγιστο (διπλό d1, διπλό d2). μέγιστο char (char c1, char c2);
Εδώ, θα θέλατε να εφαρμόσετε το μέγιστο () και για τις τέσσερις περιπτώσεις.
Φυσικά, θα μπορούσατε να υπερφορτώσετε το μέγιστο () με όλες τις πιθανές εκδόσεις:
διπλό μέγιστο (διπλό d1, διπλό d2) {επιστροφή (d1> d2); d1: d2;} int μέγιστο (int n1, int n2) {επιστροφή (n1> n2); n1: n2;} char μέγιστο (char c1, char c2) {επιστροφή (c1> c2); c1: c2;} // … επαναλάβετε για όλους τους άλλους αριθμητικούς τύπους …
Αυτή η προσέγγιση λειτουργεί. Τώρα η C ++ επιλέγει την καλύτερη αντιστοίχιση, το μέγιστο (int, int) , για μια αναφορά όπως το μέγιστο (1, 2) . Ωστόσο, η δημιουργία της ίδιας συνάρτησης για κάθε τύπο μεταβλητής είναι ένα χονδρικό χάσιμο χρόνου.
Ο πηγαίος κώδικας για όλες τις μέγιστες λειτουργίες (T, T) ακολουθεί το ίδιο μοτίβο, όπου T είναι ένας από τους αριθμητικούς τύπους. Θα ήταν τόσο βολικό αν μπορούσατε να γράψετε τη λειτουργία μία φορά και αφήστε την C ++ να τροφοδοτήσει τον τύπο Τ όπως απαιτείται όταν χρησιμοποιείται η λειτουργία. Στην πραγματικότητα, η C ++ σάς επιτρέπει να κάνετε ακριβώς αυτό. Ονομάζονται ορισμοί προτύπων .
