Junior
Τι είναι ο πολυμορφισμός στο πλαίσιο των γλωσσών προγραμματισμού C/C++;
sobes.tech AI
Απάντηση από AI
Ο πολυμορφισμός είναι η ιδιότητα των αντικειμένων να έχουν πολλές μορφές ή να αντιπροσωπεύουν πολλούς τύπους σε μια ιεραρχία κληρονομιάς. Επιτρέπει την εργασία με αντικείμενα διαφόρων κλάσεων μέσω μιας κοινής διεπαφής της βασικής κλάσης.
Στη C++, ο πολυμορφισμός υλοποιείται με δύο βασικούς τρόπους:
-
Πολυμορφισμός χρόνου μεταγλώττισης (στατικός, ad-hoc πολυμορφισμός):
- Υλοποιείται μέσω υπερφόρτωσης συναρτήσεων και τελεστών.
- Η επιλογή της συγκεκριμένης λειτουργίας ή τελεστή γίνεται κατά τη μεταγλώττιση.
// Παράδειγμα υπερφόρτωσης συναρτήσεων void print(int a) { /* ... */ } void print(double b) { /* ... */ } -
Πολυμορφισμός χρόνου εκτέλεσης (δυναμικός, υποτύπος πολυμορφισμός):
- Υλοποιείται μέσω εικονικών συναρτήσεων και δεικτών/συνδέσμων στην βασική κλάση.
- Η επιλογή της συγκεκριμένης λειτουργίας που θα κληθεί γίνεται κατά την εκτέλεση.
- Απαιτεί τουλάχιστον μία εικονική συνάρτηση στην βασική κλάση.
- Χρησιμοποιεί τον πίνακα εικονικών συναρτήσεων (vtable).
// Παράδειγμα δυναμικού πολυμορφισμού class Base { public: virtual void show() { /* Υλοποίηση στη βασική κλάση */ } }; class Derived : public Base { public: void show() override { /* Υπερκαλυμμένη υλοποίηση */ } }; // Χρήση Base* ptr = new Derived(); ptr->show(); // Καλείται η Derived::show()
Ο πολυμορφισμός επιτρέπει τη συγγραφή πιο ευέλικτου και επεκτάσιμου κώδικα, καθώς νέες κλάσεις μπορούν να προστεθούν χωρίς να αλλάξει ο υπάρχων κώδικας που λειτουργεί με την βασική κλάση.