Junior
Τι είναι η υπερισχύ (override) σε C++;
sobes.tech AI
Απάντηση από AI
Η υπεροχή (override) είναι ένας μηχανισμός στον αντικειμενοστραφή προγραμματισμό, όπου μια παράγωγη κλάση παρέχει τη δική της συγκεκριμένη υλοποίηση μιας εικονικής λειτουργίας που δηλώνεται στην βασική κλάση. Όταν καλείται μια τέτοια λειτουργία μέσω δείκτη ή αναφοράς στη βασική κλάση, θα εκτελεστεί η υλοποίηση του πραγματικού τύπου αντικειμένου (παραγόμενο ή βασικό), ανάλογα με το αν η λειτουργία έχει υπεροχηθεί.
Βασικά σημεία:
- Εφαρμόζεται μόνο σε εικονικές λειτουργίες.
- Η υπογραφή (όνομα, τύπος επιστροφής, τύποι και αριθμός παραμέτρων) της λειτουργίας που υπεροχηθεί στην παράγωγη κλάση πρέπει να ταιριάζει ακριβώς με την υπογραφή της λειτουργίας στην βασική κλάση.
- Η λέξη-κλειδί
override(από C++11 και μετά) χρησιμοποιείται για να δηλώσει ρητά την πρόθεση υπεροχής μιας λειτουργίας. Ο μεταγλωττιστής θα ελέγξει αν η λειτουργία στην βασική κλάση υπάρχει πραγματικά με αυτήν την υπογραφή και θα εμφανίσει σφάλμα αν όχι. Αυτό βοηθά στην αποφυγή τυπογραφικών λαθών και καθιστά τον κώδικα πιο ευανάγνωστο.
Παράδειγμα:
class Base {
public:
virtual void print() {
// Υλοποίηση της βασικής κλάσης
// ...
}
virtual void display(int x) const {
// Άλλη εικονική λειτουργία
// ...
}
};
class Derived : public Base {
public:
// Υπεροχή της λειτουργίας print από το Base
void print() override {
// Συγκεκριμένη υλοποίηση για το Derived
// ...
}
// Αυτό δεν είναι υπεροχή, καθώς λείπει το const
/*
void display(int x) {
// Σφάλμα μεταγλώττισης με override
// ...
}
*/
// Σωστή υπεροχή της λειτουργίας display από το Base
void display(int x) const override {
// Συγκεκριμένη υλοποίηση για το Derived
// ...
}
};