Βίντεο: James Earl Ray Interview: Assassin of Civil Rights and Anti-War Activist Dr. Martin Luther King, Jr. 2025
Σαν φράχτης περιφράξεων, το C ++ υποστηρίζει τόσο την πρώιμη όσο και την καθυστερημένη σύνδεση. Οποιαδήποτε δεδομένη γλώσσα προγραμματισμού μπορεί να υποστηρίξει είτε την πρόωρη είτε την καθυστερημένη δέσμευση βάσει των ιδιοτροπιών των προγραμματιστών της. Οι παλαιότερες γλώσσες, όπως η C, τείνουν να υποστηρίζουν μόνο την έγκαιρη δέσμευση. Οι πρόσφατες γλώσσες όπως η Java και η C # υποστηρίζουν μόνο καθυστερημένη σύνδεση.
Μπορεί να εκπλαγείτε ότι η προεπιλογή για την C ++ είναι έγκαιρη. Η έξοδος του προγράμματος OverloadOverride εμφανίζεται ως εξής:
Είμαστε στο Student:: calcTuition Είμαστε στο Student:: calcTuition Πατήστε Enter για να συνεχίσετε …
Ο λόγος είναι απλός, αν είναι λίγο χρονολογημένος. Πρώτον, η C ++ πρέπει να λειτουργεί όσο το δυνατόν περισσότερο από το C, για να διατηρήσει την συμβατότητα προς τα πάνω με τον προκάτοχό της. Δεύτερον, ο πολυμορφισμός προσθέτει ένα μικρό ποσό γενικών εξόδων σε κάθε κλήση λειτουργίας τόσο όσον αφορά την αποθήκευση δεδομένων όσο και τον κωδικό που απαιτείται για την πραγματοποίηση της κλήσης.
Οι ιδρυτές της C ++ ανησυχούσαν ότι θα έπρεπε να χρησιμοποιηθούν τυχόν πρόσθετα έξοδα ως λόγος να μην υιοθετήσουν τη C ++ ως γλώσσα επιλογής του συστήματος, έτσι ώστε να καταστήσουν την πιο αποτελεσματική έγκαιρη δέσμευση της προεπιλογής.
εικονική
που λέει στο C ++ ότι η calcTuition () είναι μια λειτουργία πολυμορφικού μέλους. Δηλαδή, η δήλωσή της (virtual) σημαίνει ότι οι κλήσεις προς αυτήν θα δεσμευτούν αργά αν υπάρχουν αμφιβολίες ως προς τον τύπο χρόνου εκτέλεσης του αντικειμένου με το οποίο καλείται CalcTution ().
με CalcTution () δηλώνει την εικονική παράγει την ακόλουθη έξοδο: Είμαστε στο Student:: calcTuition Είμαστε στο GraduateStudent: Εισαγάγετε για να συνεχίσετε … Εάν είστε εξοικειωμένοι με το εργαλείο εντοπισμού σφαλμάτων που συνοδεύει το περιβάλλον C ++, πρέπει πραγματικά να κάνετε ένα βήμα μέσω αυτού του παραδείγματος. Είναι πολύ ωραίο να βλέπετε το πρόγραμμα με ένα βήμα στο Student:: calcTution () για πρώτη φορά που ονομάζεται fn () αλλά στο GraduateStudent:: calTution () στη δεύτερη κλήση. Δεν μπορείτε πραγματικά να εκτιμήσετε τον πολυμορφισμό μέχρι να το δοκιμάσετε.
Πρέπει να δηλώσετε τη λειτουργία μόνο στην βασική κλάση. Η "εικονικότητα" μεταφέρεται αυτόματα στην υποκλάση. Μερικές φορές, όμως, οι προγραμματιστές ακολουθούν το πρότυπο κωδικοποίησης της δήλωσης της λειτουργίας virtual σχεδόν παντού (ουσιαστικά).
