Diferența dintre legarea statică și cea dinamică
Conţinut
- Diagramă de comparație:
- Definiția legării statice
- Implementarea legării statice în C ++ cu un exemplu de supraîncărcare
- Concluzie:
Asocierea unei „definiții a funcției” la un „apel de funcție” sau o asociere a unei „valori” la o „variabilă” se numește „legare”. În timpul compilării, fiecărei „definiții a funcției” i se oferă o adresă de memorie; de îndată ce apelul funcțional este finalizat, controlul execuției programului se mută pe adresa de memorie și se execută codul funcției stocat la locația respectivă, aceasta este legarea „apelului funcțional” la „definiția funcției”. Legarea poate fi clasificată ca „legare statică” și „legare dinamică”.
Dacă se știa deja înainte de execuție, ce funcție va fi invocată sau ce valoare este atribuită unei variabile, atunci aceasta este o „legare statică”. dacă vine vorba de cunoaștere la runtime, atunci se numește „legare dinamică”.
- Diagramă de comparație
- Definiție
- Diferențele cheie
- Concluzie
Diagramă de comparație:
Baza de comparație | Legarea statică | Legare dinamică |
---|---|---|
Evenimentul evenimentului | Evenimentele care apar la momentul compilării sunt „Legarea statică”. | Evenimentele care apar la timpul de rulare sunt „Legare dinamică”. |
informație | Toate informațiile necesare pentru apelarea unei funcții sunt cunoscute la ora de compilare. | Toate informațiile trebuie să apeleze o funcție să se cunoască în timpul rulării. |
Avantaj | Eficienţă. | Flexibilitate. |
Timp | Execuție rapidă. | Execuție lentă. |
nume alternativ | Legare timpurie. | Legare târzie. |
Exemplu | Apel funcțional supraîncărcat, operatori supraîncărcați. | Funcție virtuală în C ++, metode suprasolicitate în java. |
Definiția legării statice
Când compilatorul recunoaște toate informațiile necesare pentru a apela o funcție sau toate valorile variabilelor în timpul compilării, aceasta se numește „legare statică„. Deoarece toate informațiile solicitate sunt cunoscute înainte de execuție, crește eficiența programului și sporește, de asemenea, viteza de execuție a unui program.
Legarea statică face un program foarte eficient, dar declina flexibilitatea programului, deoarece „valorile variabilei” și „apelarea funcției” sunt predefinite în program. Legarea statică este implementată într-un program în momentul codării.
Supraîncărcarea unei funcții sau a unui operator sunt exemplul polimorfismului compilat în timp, adică legarea statică.
Implementarea legării statice în C ++ cu un exemplu de supraîncărcare
#include Aici, valoarea pointerului se schimbă pe măsură ce programul este în execuție, iar valoarea indicatorului decide ce funcție a clasei va fi invocată. Aici, informațiile sunt furnizate în timp de rulare, necesită timp pentru a lega datele care încetinesc execuția. Cu toate acestea, concluzionăm că, atunci când avem cunoștințe prealabile despre valorile apelurilor variabile și funcționale, aplicăm legarea statică. În schimb, în Binding dinamic, oferim toate informațiile în momentul executării.
Concluzie: