Παράκαμψη συνάρτησης C ++

C Function Overriding



Σε αυτό το άρθρο, θα καλύψουμε τη λειτουργία που υπερισχύει στη γλώσσα προγραμματισμού C ++. Το C ++ υποστηρίζει πολυμορφισμό χρόνου εκτέλεσης.

Σε κυρίαρχη λειτουργία, η θυγατρική τάξη επαναπροσδιορίζει τη συνάρτηση που έχει ήδη οριστεί στη γονική της τάξη.







Επιτρέπει στον προγραμματιστή να παρέχει λειτουργίες που προέρχονται από συγκεκριμένη κλάση (αν και ορίζεται στη βασική κλάση).



Τώρα, θα δούμε μερικά παραδείγματα και θα κατανοήσουμε τη βασική έννοια της συνάρτησης στο C ++.



Παράδειγμα-1

Έχω ορίσει δύο κλάσεις στο παρακάτω παράδειγμα κώδικα - μια βασική κλάση και μια παράγωγη κλάση. Η βασική κλάση έχει μια συνάρτηση μέλους, δηλαδή, disp (). Το Derived_Class κληρονομείται από το Base_Class. Η συνάρτηση disp () είναι παρούσα στο Base_Class και στη συνέχεια επαναπροσδιορίζεται στην Derived_Class.





Στην συνάρτηση main (), δημιουργείται ένα αντικείμενο του Derived_Class, δηλ., D. Στη συνέχεια, καλούμε τη συνάρτηση disp () στο αντικείμενο της κλάσης που παράγεται, οπότε η συνάρτηση στην παράγωγη κλάση θα κληθεί. Η βασική έκδοση της τάξης αγνοείται εδώ. Μπορείτε να δείτε παρακάτω τη συνάρτηση εξόδου ως - disp () στην παράγωγη κλάση.

#περιλαμβάνω

χρησιμοποιώντας το όνομα χώρου std?

// βασική τάξη
κλάση Base_Class
{
δημόσιο:
κενόςεπωφελούμαι()
{
κόστος<< συνάρτηση 'disp () στη βασική κλάση.' <<endl?
}

}?

// παράγωγη κλάση
τάξη Derived_Class:public Base_Class
{
δημόσιο:
κενόςεπωφελούμαι()
{
κόστος<< συνάρτηση 'disp () στην παράγωγη κλάση' <<endl?
}
}?

intκύριος()
{
Παράγωγη_Κλάση δ?
ρε.επωφελούμαι()? // συνάρτηση disp () σε αντικείμενο κλάσης που παράγεται
ΕΠΙΣΤΡΟΦΗ 0?
}



Παράδειγμα-2

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

#περιλαμβάνω

χρησιμοποιώντας το όνομα χώρου std?

κλάση Base_Class
{
δημόσιο:
κενόςεπωφελούμαι()
{
κόστος<< συνάρτηση 'disp () στη βασική κλάση.' <<endl?
}

}?

τάξη Derived_Class:public Base_Class
{
δημόσιο:
κενόςεπωφελούμαι()
{
Base_Class::επωφελούμαι()? // Καλέστε την έκδοση βασικής κλάσης του disp ()
}
}?

intκύριος()
{
Παράγωγη_Κλάση δ?
ρε.επωφελούμαι()?
ΕΠΙΣΤΡΟΦΗ 0?
}

Παράδειγμα-3

Αυτό είναι ένα άλλο παράδειγμα υπέρβασης της λειτουργίας. Σε αυτό το παράδειγμα, έχουμε δημιουργήσει μια γονική τάξη - Animal και δύο προερχόμενες κατηγορίες - Duck and Dog. Η βασική κλάση, δηλαδή η τάξη των ζώων, έχει έναν ήχο συνάρτησης μέλους ().

Στην παράγωγη κλάση/κλάση παιδιού, δηλαδή, Dog, έχουμε επαναπροσδιορίσει την ίδια λειτουργία, δηλαδή τον ήχο (), για να παρακάμψουμε τον ορισμό της βασικής κλάσης. Ομοίως, στην άλλη παράγωγη κλάση, δηλαδή, την Duck, έχουμε επαναπροσδιορίσει την ίδια λειτουργία, δηλαδή τον ήχο ().

Στην κύρια () συνάρτηση, έχουμε δημιουργήσει το αντικείμενο σκύλου του Dog and duck of Duck. Έτσι, τώρα, όταν καλούμε τη συνάρτηση ήχου () για σκύλο και πάπια, θα κληθεί η παράγωγη έκδοση τάξης της λειτουργίας (). Μπορείτε να δείτε την έξοδο του προγράμματος όπως φαίνεται παρακάτω. Έτσι, με τη βοήθεια της κυριαρχικής συνάρτησης, μπορούμε να επικαλεστούμε τη συναγόμενη συνάρτηση συγκεκριμένης κλάσης.

#περιλαμβάνω

χρησιμοποιώντας το όνομα χώρου std?

τάξη Ζώο
{
δημόσιο:
κενόςήχος()
{
κόστος<< 'Soundχος ζώων!' <<endl?
}

}?

// Παράγωγη τάξη - Τάξη σκύλου
τάξη Σκύλος:δημόσιο ζώο
{
δημόσιο:
κενόςήχος()
{
κόστος<< «Soundχος σκύλου - γαβγίζει». <<endl?
}
}?

// Παράγωγη τάξη - τάξη πάπιας
κατηγορία Πάπια:δημόσιο ζώο
{
δημόσιο:
κενόςήχος()
{
κόστος<< «Soundχος πάπιας - κουάκ». <<endl?
}
}?


intκύριος()
{
Σκύλος σκύλος?
Πάπια πάπιας?

σκύλος.ήχος()? // ήχος () του σκύλου
πάπια.ήχος()? // ήχος () της πάπιας

ΕΠΙΣΤΡΟΦΗ 0?
}

συμπέρασμα

Σε αυτό το άρθρο, εξήγησα τη λειτουργία που κυριαρχεί C ++ Το Η γλώσσα C ++ υποστηρίζει πολυμορφισμό χρόνου εκτέλεσης. Η παράκαμψη συνάρτησης βοηθά στην επίτευξη του πολυμορφισμού χρόνου εκτέλεσης στο C ++. Αυτό το άρθρο εξέτασε την έννοια της υπέρβασης της συνάρτησης και πώς να επιτευχθεί ο πολυμορφισμός χρόνου εκτέλεσης χρησιμοποιώντας την υπέρβαση της λειτουργίας.