Δικτύωση

Γνώση Υπολογιστών >> Δικτύωση >  >> Εικονική Δίκτυα

Τι είναι η εικονική κληρονομιά;

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

Εξετάστε το ακόλουθο παράδειγμα:

``c++

// Βασική κλάση

Κατηγορία Ζώο {

κοινό:

όνομα συμβολοσειράς?

};

// Παράγωγη κλάση 1

κατηγορία σκύλος :δημόσιο Ζώο {

κοινό:

φυλή χορδών?

};

// Παράγωγη κλάση 2

κατηγορία Γάτα :δημόσιο Ζώο {

κοινό:

Χρώμα χορδής?

};

// Προερχόμενη κλάση 3 (κληρονομείται από σκύλο και γάτα)

Κατηγορία κατοικίδιο ζώο :δημόσιος σκύλος, δημόσια γάτα {

κοινό:

//...

};

```

Χωρίς εικονική κληρονομικότητα, η κλάση "Pet" θα κληρονομούσε δύο αντίγραφα της βασικής κλάσης "Animal", τα οποία θα μπορούσαν να οδηγήσουν σε σφάλματα χρόνου εκτέλεσης ή σε τεμαχισμό αντικειμένων (όπου έχει κατασκευαστεί μόνο ένα μέρος του αντικειμένου "Pet"). Για να αποφευχθεί αυτό, μπορούμε να χρησιμοποιήσουμε εικονική κληρονομικότητα καθορίζοντας τη λέξη-κλειδί «εικονική» στη δήλωση κλάσης βάσης:

``c++

// Βασική κλάση με εικονική κληρονομικότητα

κατηγορία Ζώο {

κοινό:

όνομα συμβολοσειράς?

};

```

Χρησιμοποιώντας εικονική κληρονομικότητα, η κλάση «Pet» θα κληρονομήσει μόνο ένα αντίγραφο της βασικής κλάσης «Animal», διασφαλίζοντας τη σωστή συμπεριφορά και αποτρέποντας σφάλματα χρόνου εκτέλεσης.

Πλεονεκτήματα:

1. Επίλυση ασάφειας: Βοηθά στην επίλυση της ασάφειας όταν πολλές βασικές κλάσεις έχουν την ίδια συνάρτηση μέλους ή μέλος δεδομένων.

2. Μειωμένο κόστος μνήμης: Αποφεύγει τον τεμαχισμό αντικειμένων, μειώνοντας την επιβάρυνση της μνήμης και βελτιώνοντας την απόδοση.

3. Ευελιξία: Επιτρέπει σύνθετες ιεραρχίες κληρονομικότητας όπου οι παραγόμενες κλάσεις μπορούν να κληρονομήσουν από πολλαπλές βασικές κλάσεις.

Πότε να χρησιμοποιήσετε εικονική κληρονομικότητα:

- Όταν έχετε πολλαπλή κληρονομιά και θέλετε να αποφύγετε διφορούμενα μέλη βάσης ή τεμαχισμό αντικειμένων.

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

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα