Skirtumas tarp statinio ir dinaminio įrišimo

Autorius: Laura McKinney
Kūrybos Data: 1 Balandis 2021
Atnaujinimo Data: 1 Liepos Mėn 2024
Anonim
Java Interview 04 - Static Binding Vs Dynamic Binding
Video.: Java Interview 04 - Static Binding Vs Dynamic Binding

Turinys


„Funkcijos apibrėžimo“ susiejimas su „funkcijos skambučiu“ arba „vertės“ susiejimas su „kintamuoju“ vadinamas „įpareigojančiu“. Kompiliavimo metu kiekvienam „funkcijos apibrėžimui“ suteikiamas atminties adresas; kai tik atliekamas funkcijų iškvietimas, programos vykdymo kontrolė pereina į tą atminties adresą ir vykdomas toje vietoje saugomas funkcijos kodas, tai yra „funkcijos skambučio“ susiejimas su „funkcijos apibrėžimu“. Įrišimas gali būti klasifikuojamas kaip „statinis rišimas“ ir „dinaminis rišimas“.

Jei jau buvo žinoma prieš vykdymo laiką, kuri funkcija bus iškviesta arba kokia reikšmė paskirta kintamajam, tada tai yra „statinis įrišimas“. jei apie tai sužinosite vykdant, tai vadinama „dinaminiu rišimu“.

  1. Palyginimo diagrama
  2. Apibrėžimas
  3. Pagrindiniai skirtumai
  4. Išvada

Palyginimo diagrama:

Palyginimo pagrindasStatinis įrišimasDinaminis įrišimas
Įvykio įvykisĮvykiai, sudaryti kompiliavimo metu, yra „Statinis įrišimas“.
Įvykiai, vykstantys vykdymo metu, yra „dinaminis įrišimas“.
InformacijaVisa informacija, reikalinga funkcijai iškviesti, yra žinoma kompiliavimo metu.Visa informacija, kurią reikia iškviesti funkcijai, sužinojo paleidimo metu.
PrivalumasEfektyvumas.Lankstumas.
LaikasGreitas vykdymas.Lėtas vykdymas.
Alternatyvus vardasAnkstyvas įrišimas.Vėlyvas įrišimas.
PavyzdysPerkrautas funkcijos skambutis, perkrautas operatorius.Virtuali funkcija C ++, nepaisomi metodai „Java“.

Statinio įrišimo apibrėžimai

Kai kompiliatorius pripažįsta visą informaciją, reikalingą funkcijai iškviesti, arba visas kintamųjų reikšmes kompiliavimo metu, ji vadinama „statinis rišimas“. Kadangi visa reikalinga informacija yra žinoma prieš vykdymo laiką, tai padidina programos efektyvumą ir taip pat padidina programos vykdymo greitį.


Statinis įrišimas daro programą labai efektyvią, tačiau ji sumažina programos lankstumą, nes programoje iš anksto nustatomos „kintamojo reikšmės“ ir „funkcijos iškvietimas“. Statinis įrišimas įgyvendinamas programoje kodavimo metu.

Funkcijos ar operatoriaus perkrovimas yra kompiliavimo laiko polimorfizmo, t. Y. Statinio susirišimo, pavyzdys.

Statinio rišimo įgyvendinimas C ++ su perkrovos pavyzdžiu

# įtraukti naudojant vardų sritį; klasės perkrova {int a, b; vieša: int load (int x) {// pirmoji apkrova () funkcija. a = x; cout << "x reikšmė yra" <funktas (); // Aukščiau pateiktas teiginys nusprendžia, kuri klasių funkcija turi būti naudojama. p = & d1; // Rodyklės reikšmė keičiasi. p-> funktas (); // Aukščiau pateiktas teiginys nusprendžia, kuri klasių funkcija turi būti naudojama. p = & d2; // Vėl keičiasi žymeklio vole. p-> funktas (); // Aukščiau pateiktas teiginys nusprendžia, kuri klasių funkcija turi būti naudojama. grįžti 0; }

Čia rodyklės vertė keičiasi, kai programa vykdoma, o rodyklės vertė nusprendžia, kuri klasės funkcija bus naudojama. Taigi čia informacija pateikiama vykdymo metu, todėl reikia laiko surišti duomenis, kurie sulėtina vykdymą.


  1. Įvykiai, vykstantys kompiliavimo metu, pavyzdžiui, funkcijos kodas yra susietas su funkcijos iškvietimu arba vertės priskyrimu kintamajam, yra vadinami statiniais / ankstyvaisiais įrišimais. Priešingai, kai šios užduotys įvykdytos vykdymo metu, jos vadinamos dinamine / vėlyvaja įpareigojimu.
  2. Statinio įrišimo efektyvumas padidėja, nes visi duomenys yra surenkami prieš vykdant. Bet atliekant dinaminį įrišimą, duomenys gaunami vykdant laiką, todėl galime nuspręsti, kokią reikšmę priskirti kintamajam ir kurią funkciją paleisti vykdymo metu, todėl vykdymas tampa „lankstus“.
  3. „Statinis įrišimas“ pagreitina programos vykdymą, nes visi duomenys, reikalingi programai vykdyti, yra žinomi prieš vykdant. „Dinaminio įrišimo“ duomenys, reikalingi programai vykdyti, kompiliatoriui yra žinomi vykdymo metu, o tai reikalauja laiko susieti vertybes su identifikatoriais; todėl programos vykdymas sulėtėja.
  4. Statinis įrišimas taip pat vadinamas ankstyvu įrišimu, nes funkcijos kodas yra susietas su funkcijos iškvietimu kompiliavimo metu, o tai yra anksčiau nei dinaminis įrišimas, kai funkcijos kodas yra susietas su funkcijos iškvietimu vykdymo metu, taigi jis taip pat vadinamas vėlyvuoju įrišimu.

Išvada:

Tačiau darome išvadą, kad kai turime išankstinių žinių apie kintamųjų ir funkcijų iškvietimo reikšmes, taikome statinį rišimą. Atvirkščiai, dinaminiame įrišime mes teikiame visą informaciją vykdymo metu.