Разлика између статичког и динамичког везивања

Аутор: Laura McKinney
Датум Стварања: 1 Април 2021
Ажурирати Датум: 1 Јули 2024
Anonim
switch with indicator -Test
Видео: switch with indicator -Test

Садржај


Везивање асоцијације 'дефиниције функције' са 'функцијским позивом' или повезаности 'вредности' са 'променљивом', назива се 'везивање'. Током компилације, свакој 'дефиницији функције' се даје меморијска адреса; Чим се изврши позивање функција, контрола извршења програма премешта се на ту меморијску адресу и извршава се код функције који се чува на тој локацији, ово је Везивање „функције позива“ на „дефиниција функције“. Везање се може класификовати као „статичко везивање“ и „динамичко везивање“.

Ако се већ зна за време извођења, која ће се функција позивати или која ће се вредност доделити променљивој, онда је то „статичко везивање“. ако се сазна за време извођења, онда се то назива "динамичко везивање".

  1. Упоредни графикон
  2. Дефиниција
  3. Кључне разлике
  4. Закључак

Упоредни графикон:

Основе за поређењеСтатиц БиндингДинамиц Биндинг
Појава догађајаДогађаји који се догађају у време компилације су "Статично везивање".
Догађаји који се догађају у току извођења су „Динамично везивање“.
ИнформацијеСве информације потребне за позивање функције познате су у вријеме компилације.Све информације о позиву функције морају се знати у току рада.
ПредностЕфикасност.Флексибилност
времеБрзо извршење.Споро извршење.
Алтернативни називРано везивање.Касно везивање.
ПримерПреоптерећен позив функције, преоптерећени оператери.Виртуелна функција у Ц ++, надјачана метода у јави.

Дефиниције статичког везивања

Када компајлер препозна све информације потребне за позивање функције или све вредности променљивих током времена компилације, она се зове „статичко везивање“. Како су све потребне информације познате пре времена извођења, то повећава ефикасност програма и повећава брзину извршења програма.


Статичко увезивање чини програм веома ефикасним, али одбија програмску флексибилност, јер су у њему предефинисане „вредности променљиве“ и „позивање функције“. Статичко везивање се проводи у програму у тренутку кодирања.

Преоптерећење неке функције или оператера је пример полиморфизма у компајлирању, тј. Статичког Везивања.

Примена статичког везивања у Ц ++ са примером преоптерећења

#инцлуде користећи намеспаце стд; преоптерећење класе {инт а, б; публиц: инт лоад (инт к) {// прво оптерећење () функција. а = к; цоут << "Вредност к је" <фунцт (); // Горња изјава одлучује које ће класе бити позване. п = & д1; // Влауе показивача се мења. п-> фунцт (); // Горња изјава одлучује које ће класе бити позване. п = & д2; // Опет се влауе показивача мења. п-> фунцт (); // Горња изјава одлучује које ће класе бити позване. ретурн 0; }

Овде се вредност показивача мења током извођења програма, а вредност показивача одлучује која ће се функција класе позвати. Дакле, овде се информације пружају у време извођења, потребно је време да се вежу подаци који успоравају извршење.


  1. Догађаји који се догађају у вријеме компилације, нпр. Код функције је повезан с функцијским позивом или додјељивањем вриједности варијабли, називају се статичко / рано везивање. Супротно томе, када се ови задаци извршавају током извођења, они се називају динамичним / касним везивањем.
  2. 'Ефикасност' се повећава у статичком повезивању, јер се сви подаци прикупљају пре извршења. Али у динамичком повезивању подаци се добијају током извођења, тако да можемо одлучити која ће вредност доделити променљивој и коју функцију позвати током извођења, а то извршење чини „флексибилним“.
  3. „Статичко везивање“ чини извршавање програма „бржим“ јер су сви подаци потребни за извршавање програма познати пре извршења. Подаци „динамичког везивања“ потребни за извршавање програма познати су преводиоцу у тренутку извршења, за шта је потребно време да веже вредности за идентификаторе; стога извршава програм спорије.
  4. Статичко повезивање се такођер назива рано везање јер је функцијски код повезан са позивом функције током времена компилације, што је раније од динамичког Везивања у којем је функцијски код повезан са функцијским позивом током извођења, па се назива и касно везивање.

Закључак:

Међутим, закључујемо да када претходно знамо вредности променљивих и функција позива применимо статичко везивање. Супротно томе, у динамичном увезивању пружамо све информације у тренутку извршења.