Υπερφόρτωση λειτουργίας C ++ (με παραδείγματα)

Σε αυτό το σεμινάριο, θα μάθουμε για τη λειτουργία υπερφόρτωσης στο C ++ με παραδείγματα.

Στο C ++, δύο συναρτήσεις μπορούν να έχουν το ίδιο όνομα εάν ο αριθμός ή / και ο τύπος των ορισμάτων που έχουν περάσει είναι διαφορετικός.

Αυτές οι συναρτήσεις έχουν το ίδιο όνομα, αλλά διαφορετικά ορίσματα είναι γνωστά ως υπερφορτωμένες συναρτήσεις. Για παράδειγμα:

 // same name different arguments int test() ( ) int test(int a) ( ) float test(double a) ( ) int test(int a, double b) ( )

Εδώ, και οι 4 λειτουργίες είναι υπερφορτωμένες λειτουργίες.

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

 // Error code int test(int a) ( ) double test(int b)( )

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

Λειτουργία υπερφόρτωση χρησιμοποιώντας διαφορετικούς τύπους παραμέτρων

 // Program to compute absolute value // Works for both int and float #include using namespace std; // function with float type parameter float absolute(float var)( if (var < 0.0) var = -var; return var; ) // function with int type parameter int absolute(int var) ( if (var < 0) var = -var; return var; ) int main() ( // call function with int type parameter cout << "Absolute value of -5 = " << absolute(-5) << endl; // call function with float type parameter cout << "Absolute value of 5.5 = " << absolute(5.5f) << endl; return 0; )

Παραγωγή

 Απόλυτη τιμή -5 = 5 Απόλυτη τιμή 5,5 = 5.5
Εργασία υπερφόρτωσης για την απόλυτη () συνάρτηση

Σε αυτό το πρόγραμμα, υπερφορτώνουμε τη absolute()λειτουργία. Με βάση τον τύπο της παραμέτρου που πέρασε κατά τη διάρκεια της κλήσης συνάρτησης, καλείται η αντίστοιχη συνάρτηση.

Λειτουργία υπερφόρτωση χρησιμοποιώντας διαφορετικό αριθμό παραμέτρων

 #include using namespace std; // function with 2 parameters void display(int var1, double var2) ( cout << "Integer number: " << var1; cout << " and double number: " << var2 << endl; ) // function with double type single parameter void display(double var) ( cout << "Double number: " << var << endl; ) // function with int type single parameter void display(int var) ( cout << "Integer number: " << var << endl; ) int main() ( int a = 5; double b = 5.5; // call function with int type parameter display(a); // call function with double type parameter display(b); // call function with 2 parameters display(a, b); return 0; )

Παραγωγή

 Ακέραιος αριθμός: 5 Αριθμός πλωτήρα: 5.5 Αριθμός ακέραιου: 5 και διπλός αριθμός: 5.5

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

Εργασία υπερφόρτωσης για τη λειτουργία οθόνης ()

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

Σημείωση: Στο C ++, πολλές τυπικές λειτουργίες βιβλιοθήκης είναι υπερφορτωμένες. Για παράδειγμα, η sqrt()συνάρτηση μπορεί να δεχθεί double, float, int,κλπ ως παραμέτρους. Αυτό είναι δυνατό επειδή η sqrt()συνάρτηση είναι υπερφορτωμένη στο C ++.

ενδιαφέροντα άρθρα...