Σπίτι Προσωπικά Οικονομικά C ++ Προγραμματισμός: Πότε δεν υπάρχει μια εικονική λειτουργία; - dummies

C ++ Προγραμματισμός: Πότε δεν υπάρχει μια εικονική λειτουργία; - dummies

Βίντεο: Mitch Resnick: Let's teach kids to code 2024

Βίντεο: Mitch Resnick: Let's teach kids to code 2024
Anonim

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

Μία εξαίρεση από τον ίδιο κανόνα δήλωσης είναι ότι εάν η συνάρτηση μέλους στη βασική κλάση επιστρέφει έναν δείκτη ή μια αναφορά σε ένα αντικείμενο κλάσης βάσης, μια συνάρτηση του αντικατασταθέντος μέλους σε μια υποκατηγορία μπορεί να επιστρέψει έναν δείκτη ή μια αναφορά σε ένα αντικείμενο της υποκατηγορίας. Με άλλα λόγια, η λειτουργία makeACopy () είναι πολυμορφική, παρόλο που ο τύπος επιστροφής των δύο λειτουργιών διαφέρει:

class Βάση {public: // επιστροφή ενός αντιγράφου του τρέχοντος αντικειμένου Base * makeACopy ();}; class Υποκατηγορία: δημόσια Βάση {public: // επιστροφή ενός αντιγράφου του τρέχοντος αντικειμένου SubClass * makeACopy ();}; κενό fn (Βάση & bc) {Base * pCopy = bc. Κάνε ένα αντίγραφο(); // συνεχίστε …}

Στην πράξη, αυτό είναι φυσικό. Μια συνάρτηση makeACopy () θα πρέπει να επιστρέψει ένα αντικείμενο τύπου SubClass , ακόμα και αν μπορεί να αντικαταστήσει το BaseClass:: makeACopy () .

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

τάξη Φοιτητής {δημόσια: εικονικό κενό addCourseGrade (διπλός βαθμός);}; class GradStudent: public Φοιτητής {δημόσια: εικονικό κενό addCourseGrade (float grade) override;};

Αυτό το απόσπασμα δημιουργεί ένα σφάλμα χρόνου μεταγλώττισης επειδή η μέθοδος GradStudent:: addCourseGrade (float) δηλώθηκε ότι παρακάμπτεται, αλλά στην πραγματικότητα δεν παρακάμπτει τη συνάρτηση class class Student:: addCourseGrade (διπλό) t ταιριάζει.

τελική

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

τάξη: τάξη GradStudent: δημόσιο Φοιτητής {δημόσια: εικονικό κενό addCourseGrade (διπλός βαθμός) τελικός?}; class PostDoc: δημόσιο GradStudent {public: virtual void addCourseGrade (διπλός βαθμός),}, Από το Student:: addCourseGrade () σημειώνεται τελικό , η δήλωση του PostDoc:: addCourseGrade () δημιουργεί ένα σφάλμα επειδή επιχειρεί να παρακάμψει τη μέθοδο

Student

. τελική

δεν μπορεί να κληρονομηθεί καθόλου.

C ++ Προγραμματισμός: Πότε δεν υπάρχει μια εικονική λειτουργία; - dummies

Η επιλογή των συντακτών

Πώς να αλλάξετε τη ρύθμιση ισορροπίας λευκού σε ετικέτες Canon EOS 70D

Πώς να αλλάξετε τη ρύθμιση ισορροπίας λευκού σε ετικέτες Canon EOS 70D

Χρησιμοποιώντας το Ο έλεγχος εξισορρόπησης λευκού στο Canon EOS 70D σας μπορεί εύκολα και γρήγορα να διορθώσει προβλήματα χρώματος. Οι διαθέσιμες ρυθμίσεις ισορροπίας λευκού απεικονίζονται με τα σύμβολα που εμφανίζονται στον παρακάτω πίνακα. Μπορείτε να δείτε την τρέχουσα ρύθμιση στην οθόνη Ρυθμίσεις λήψης, όπως φαίνεται στο παρακάτω σχήμα. Για να προσαρμόσετε τη ρύθμιση, έχετε ...

Η επιλογή των συντακτών

Προετοιμασία αντιγράφου TIFF ψηφιακής εικόνας για δημοσίευση - ανδρεικέλες

Προετοιμασία αντιγράφου TIFF ψηφιακής εικόνας για δημοσίευση - ανδρεικέλες

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

Εξάγοντας το περίγραμμα επιλογής του ψηφιακού σας επεξεργαστή εικόνας - ανδρείκελα

Εξάγοντας το περίγραμμα επιλογής του ψηφιακού σας επεξεργαστή εικόνας - ανδρείκελα

Η πρώτη προσπάθεια. Αναμείνετε να βελτιώσετε το περίγραμμα επιλογής σας τουλάχιστον λίγο. Μπορείτε να βελτιώσετε το περίγραμμα σας με διάφορους τρόπους: Αντίστροφη περιγράμματος επιλογής: Απλά χρησιμοποιήστε την εντολή Invert (ή την αντίστοιχη εντολή του προγράμματος). Προσθέστε σε περίγραμμα επιλογής: ...

Επιλογή από τις άκρες της ψηφιακής εικόνας - ανδρείκελα

Επιλογή από τις άκρες της ψηφιακής εικόνας - ανδρείκελα

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

Η επιλογή των συντακτών

Πώς να χρησιμοποιείτε το παράθυρο μητρώου του QuickBooks 2010 - dummies

Πώς να χρησιμοποιείτε το παράθυρο μητρώου του QuickBooks 2010 - dummies

Για να εργαστείτε ευκολότερα με το παράθυρο του Μητρώου και να ελέγξετε τον τρόπο εμφάνισής του: Το κουμπί Μετάβαση: Εμφανίζει το παράθυρο διαλόγου Μετάβαση (Go To). Αυτό το παράθυρο διαλόγου σάς επιτρέπει να αναζητήσετε μια συναλλαγή στο παράθυρο "Εγγραφή". Για παράδειγμα, μπορείτε να αναζητήσετε ...

Πώς να εργάζεστε με έναν υπάρχοντα προϋπολογισμό σε QuickBooks - dummies

Πώς να εργάζεστε με έναν υπάρχοντα προϋπολογισμό σε QuickBooks - dummies

Σε μεγάλες εταιρείες με εκατοντάδες ή χιλιάδες εργαζόμενοι, δύο ή τρία άτομα δαπανούν μεγάλο μέρος ή και ολόκληρο το χρόνο εργασίας τους με τα στοιχεία που έχουν εγγραφεί στον προϋπολογισμό. Για να επεξεργαστείτε έναν υπάρχοντα προϋπολογισμό στο QuickBooks, ακολουθήστε τα παρακάτω βήματα:

Πώς να χρησιμοποιείτε τα κουτιά παραθύρων αναφορών του QuickBooks - dummies

Πώς να χρησιμοποιείτε τα κουτιά παραθύρων αναφορών του QuickBooks - dummies

Από, Προς, Στήλες και Ταξινόμηση. Αυτά τα πλαίσια σας επιτρέπουν επίσης να ελέγχετε τις πληροφορίες που εμφανίζονται στο παράθυρο αναφοράς και την εμφάνιση των πληροφοριών. Για παράδειγμα, μπορείτε να ενημερώσετε το QuickBooks για το χρονικό διάστημα που θέλετε ...