Atšķirība starp statisko un dinamisko iesiešanu

Autors: Laura McKinney
Radīšanas Datums: 1 Aprīlis 2021
Atjaunināšanas Datums: 1 Jūlijs 2024
Anonim
Java Interview 04 - Static Binding Vs Dynamic Binding
Video: Java Interview 04 - Static Binding Vs Dynamic Binding

Saturs


“Funkcijas definīcijas” saistīšana ar “funkcijas izsaukumu” vai “vērtības” saistība ar “mainīgo” tiek saukta par “saistošu”. Apkopošanas laikā katrai “funkcijas definīcijai” tiek piešķirta atmiņas adrese; tiklīdz tiek veikta funkciju izsaukšana, programmas izpildes kontrole tiek pārvietota uz šo atmiņas adresi un tiek izpildīts tajā vietā saglabātais funkcijas kods, tas ir “funkcijas izsaukums” saistīšana ar “funkcijas definīciju”. Iesiešanu var klasificēt kā “statisku iesiešanu” un “dinamisku iesiešanu”.

Ja tas jau ir zināms pirms izpildlaika, kura funkcija tiks izsaukta vai kāda vērtība tiek piešķirta mainīgajam, tad tā ir “statiska saistīšana”. ja tas tiek darīts zināms izpildlaikā, to sauc par “dinamisko iesiešanu”.

  1. Salīdzināšanas tabula
  2. Definīcija
  3. Galvenās atšķirības
  4. Secinājums

Salīdzināšanas tabula:

Salīdzināšanas pamatsStatiskā iesiešanaDinamiska iesiešana
Notikuma atgadījumsNotikumi, kas notiek kompilēšanas laikā, ir “statiskā iesiešana”.
Notikumi, kas notiek izpildes laikā, ir “dinamiska iesiešana”.
InformācijaVisa informācija, kas nepieciešama, lai izsauktu funkciju, ir zināma sastādīšanas laikā.Visa informācija, kas nepieciešama, lai izsauktu funkciju, ir jāzina izpildes laikā.
PriekšrocībaEfektivitāte.Elastība.
LaiksĀtra izpilde.Lēna izpilde.
alternatīvs vārdsAgrīna iesiešana.Vēla iesiešana.
PiemērsPārslogots funkciju zvans, pārslogoti operatori.Virtuālā funkcija C ++, pārspīlētas metodes java.

Statiskās iesiešanas definīcijas

Kad kompilators kompilēšanas laikā atzīst visu funkciju izsaukšanai nepieciešamo informāciju vai visas mainīgo vērtības, to sauc par “statiskā iesiešana“. Tā kā visa nepieciešamā informācija ir zināma pirms izpildlaika, tas palielina programmas efektivitāti un arī programmas izpildes ātrumu.


Statiskā iesiešana padara programmu ļoti efektīvu, bet tā mazina programmas elastību, jo programmā “iepriekš ir definētas mainīgā vērtības” un “funkciju izsaukšana”. Statiskā iesiešana kodēšanas laikā tiek īstenota programmā.

Funkcijas vai operatora pārslodze ir kompilācijas laika polimorfisma, t.i., statiskās saistīšanas, piemērs.

Statisko saistījumu ieviešana C ++ ar pārslodzes piemēru

# iekļaut izmantojot namespace std; klases pārslodze {int a, b; public: int load (int x) {// pirmā slodzes () funkcija. a = x; cout << "x vērtība ir" <funct (); // Iepriekš minētais paziņojums izlemj, kura klašu funkcija tiek izsaukta. p = & d1; // Rādītāja mainība. p-> funct (); // Iepriekš minētais paziņojums izlemj, kura klašu funkcija tiek izsaukta. p = & d2; // Atkal mainās rādītāja vlaue. p-> funct (); // Iepriekš minētais paziņojums izlemj, kura klašu funkcija tiek izsaukta. atgriešanās 0; }

Šeit rādītāja vērtība mainās, kad programma tiek izpildīta, un rādītāja vērtība izlemj, kura klases funkcija tiks izsaukta. Tātad šeit informācija tiek sniegta izpildes laikā, tāpēc ir nepieciešams laiks, lai saistītu datus, kas palēnina izpildi.


  1. Notikumus, kas notiek apkopošanas laikā, piemēram, funkcijas kods ir saistīts ar funkcijas izsaukumu vai vērtības piešķiršanu mainīgajam, sauc par statisku / agrīnu saistīšanu. Tieši pretēji, ja šie uzdevumi tiek izpildīti izpildlaika laikā, tos sauc par dinamisko / vēlo saistīšanu.
  2. Statiskajā iesiešanā palielinās “efektivitāte”, jo visi dati tiek apkopoti pirms izpildes. Bet dinamiskajā iesiešanā dati tiek iegūti izpildlaikā, lai mēs varētu izlemt, kurai vērtībai piešķirt mainīgo un kuru funkciju izsaukt izpildlaikā, tas padara izpildi “elastīgu”.
  3. “Statiskā iesiešana” padara programmas izpildi “ātrāku”, jo visi dati, kas nepieciešami programmas izpildei, ir zināmi pirms izpildes. “Dinamiskā iesiešanā” dati, kas nepieciešami programmas izpildei, kompilētājam ir zināmi izpildes laikā, un tas prasa laiku, lai vērtības piesaistītu identifikatoriem. tādējādi tas padara programmas izpildi lēnāku.
  4. Statisko iesiešanu sauc arī par agrīno iesiešanu, jo funkcijas kods tiek saistīts ar funkcijas izsaukumu kompilēšanas laikā, kas ir agrāk nekā dinamiskā iesiešana, kurā funkcijas kods tiek saistīts ar funkcijas izsaukumu izpildlaika laikā, tāpēc to sauc arī par novēlotu iesiešanu.

Secinājums:

Tomēr mēs secinām, ka tad, kad mums ir iepriekšējas zināšanas par mainīgo un funkciju izsaukšanas vērtībām, mēs izmantojam statisko iesiešanu. Un otrādi - dinamiskajā iesiešanā izpildes laikā mēs sniedzam visu informāciju.