Διαφορά μεταξύ της στατικής και της δυναμικής σύνδεσης
![Θεωρία - Δυναμική ενέργεια - Δυναμικό - Διαφορά δυναμικού](https://i.ytimg.com/vi/oZ6SDcWRT28/hqdefault.jpg)
Περιεχόμενο
- Συγκριτικό διάγραμμα:
- Ορισμοί της στατικής δέσμευσης
- Εφαρμογή της στατικής σύνδεσης στην C ++ με ένα παράδειγμα υπερφορτώσεων
- Συμπέρασμα:
Η δέσμευση σύνδεσης ενός «ορισμού λειτουργίας» με μια «κλήση λειτουργίας» ή μια συσχέτιση μιας «τιμής» με μια «μεταβλητή», ονομάζεται «δέσμευση». Κατά τη διάρκεια της σύνταξης, κάθε "ορισμός της λειτουργίας" δίνεται σε μια διεύθυνση μνήμης. μόλις ολοκληρωθεί η κλήση λειτουργίας, ο έλεγχος της εκτέλεσης του προγράμματος μεταβαίνει σε εκείνη τη διεύθυνση μνήμης και ο κωδικός λειτουργίας που έχει αποθηκευτεί σε αυτήν την τοποθεσία εκτελείται, αυτό είναι η δέσμευση της "κλήσης λειτουργίας" στον "ορισμό λειτουργίας". Η δέσμευση μπορεί να ταξινομηθεί ως «στατική δέσμευση» και «δυναμική δέσμευση».
Αν είναι ήδη γνωστό πριν από το χρόνο εκτέλεσης, ποια λειτουργία θα καλείται ή ποια τιμή είναι κατανεμημένη σε μια μεταβλητή, τότε είναι μια «στατική δέσμευση». αν πρόκειται να γνωρίζουμε κατά τη διάρκεια εκτέλεσης, τότε ονομάζεται «δυναμική δέσμευση».
- Συγκριτικό διάγραμμα
- Ορισμός
- Βασικές διαφορές
- συμπέρασμα
Συγκριτικό διάγραμμα:
Βάση σύγκρισης | Στατική δέσμευση | Δυναμική σύνδεση |
---|---|---|
Εκδήλωση συμβάντος | Τα συμβάντα που συμβαίνουν κατά τον χρόνο σύνταξης είναι "Στατική δέσμευση". | Τα συμβάντα που συμβαίνουν κατά το χρόνο εκτέλεσης είναι "Δυναμική δέσμευση". |
Πληροφορίες | Όλες οι πληροφορίες που απαιτούνται για την κλήση μιας λειτουργίας είναι γνωστές στον χρόνο σύνταξης. | Όλες οι πληροφορίες πρέπει να καλέσουν μια συνάρτηση έρχονται να γνωρίσουν την ώρα εκτέλεσης. |
Πλεονέκτημα | Αποδοτικότητα. | Ευκαμψία. |
χρόνος | Γρήγορη εκτέλεση. | Αργή εκτέλεση. |
εναλλακτικό όνομα | Πρώιμη δέσμευση. | Καθυστερημένη σύνδεση. |
Παράδειγμα | Υπερφόρτωση κλήσης λειτουργίας, υπερφόρτωση χειριστών. | Εικονική συνάρτηση σε C ++, υπερδιέγερες μέθοδοι στη java. |
Ορισμοί της στατικής δέσμευσης
Όταν ο μεταγλωττιστής αναγνωρίζει όλες τις πληροφορίες που απαιτούνται για την κλήση μιας συνάρτησης ή όλες οι τιμές των μεταβλητών κατά τη διάρκεια της μεταγλώττισης, ονομάζεται "στατική δέσμευση". Δεδομένου ότι όλες οι απαιτούμενες πληροφορίες είναι γνωστές πριν από το χρόνο εκτέλεσης, αυξάνει την απόδοση του προγράμματος και επίσης αυξάνει την ταχύτητα εκτέλεσης ενός προγράμματος.
Η στατική δέσμευση καθιστά ένα πρόγραμμα πολύ αποτελεσματικό, αλλά μειώνει την ευελιξία του προγράμματος, καθώς οι "τιμές της μεταβλητής" και "κλήση λειτουργίας" είναι προκαθορισμένες στο πρόγραμμα. Η στατική δέσμευση εφαρμόζεται σε ένα πρόγραμμα κατά τη στιγμή της κωδικοποίησης.
Η υπερφόρτωση μιας συνάρτησης ή ενός χειριστή είναι το παράδειγμα του πολυμορφισμού της μεταγλώττισης, δηλαδή της στατικής σύνδεσης.
Εφαρμογή της στατικής σύνδεσης στην C ++ με ένα παράδειγμα υπερφορτώσεων
#περιλαμβάνω Εδώ η τιμή του δείκτη αλλάζει καθώς το πρόγραμμα εκτελείται και η τιμή του δείκτη αποφασίζει ποια λειτουργία της κλάσης θα καλείται. Έτσι, εδώ, οι πληροφορίες παρέχονται κατά το χρόνο εκτέλεσης, παίρνει το χρόνο να δεσμεύσει τα δεδομένα που επιβραδύνουν την εκτέλεση. Παρόλα αυτά, καταλήγουμε στο συμπέρασμα ότι όταν έχουμε προηγούμενη γνώση των τιμών μεταβλητών και λειτουργικών κλήσεων, εφαρμόζουμε τη στατική δέσμευση. Αντίθετα, στη δυναμική δέσμευση, παρέχουμε όλες τις πληροφορίες κατά την εκτέλεση.
Συμπέρασμα: