Sobes.tech
Junior

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

sobes.tech AI

Απάντηση από AI

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

Στη C++, ο πολυμορφισμός υλοποιείται με δύο βασικούς τρόπους:

  1. Πολυμορφισμός χρόνου μεταγλώττισης (στατικός, ad-hoc πολυμορφισμός):

    • Υλοποιείται μέσω υπερφόρτωσης συναρτήσεων και τελεστών.
    • Η επιλογή της συγκεκριμένης λειτουργίας ή τελεστή γίνεται κατά τη μεταγλώττιση.
    // Παράδειγμα υπερφόρτωσης συναρτήσεων
    void print(int a) { /* ... */ }
    void print(double b) { /* ... */ }
    
  2. Πολυμορφισμός χρόνου εκτέλεσης (δυναμικός, υποτύπος πολυμορφισμός):

    • Υλοποιείται μέσω εικονικών συναρτήσεων και δεικτών/συνδέσμων στην βασική κλάση.
    • Η επιλογή της συγκεκριμένης λειτουργίας που θα κληθεί γίνεται κατά την εκτέλεση.
    • Απαιτεί τουλάχιστον μία εικονική συνάρτηση στην βασική κλάση.
    • Χρησιμοποιεί τον πίνακα εικονικών συναρτήσεων (vtable).
    // Παράδειγμα δυναμικού πολυμορφισμού
    class Base {
    public:
        virtual void show() { /* Υλοποίηση στη βασική κλάση */ }
    };
    
    class Derived : public Base {
    public:
        void show() override { /* Υπερκαλυμμένη υλοποίηση */ }
    };
    
    // Χρήση
    Base* ptr = new Derived();
    ptr->show(); // Καλείται η Derived::show()
    

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