Разлика между статично и динамично свързване

Автор: Laura McKinney
Дата На Създаване: 1 Април 2021
Дата На Актуализиране: 1 Юли 2024
Anonim
Ошибки в сантехнике. Вводной узел в квартиру.
Видео: Ошибки в сантехнике. Вводной узел в квартиру.

Съдържание


Обвързването на свързване на 'дефиниция на функция' към 'функционално обаждане' или свързване на 'стойност' към 'променлива', се нарича 'свързване'. По време на компилирането, на всяко „определение на функцията“ се дава адрес на паметта; щом извикването на функция е извършено, контролът върху изпълнението на програмата се премества на този адрес на паметта и се изпълнява кодът на функцията, съхраняван на това място, това е обвързване на „извикване на функция“ към „определение на функцията“. Свързването може да бъде класифицирано като „статично свързване“ и „динамично свързване“.

Ако вече е известно преди изпълнение, коя функция ще бъде извикана или каква стойност е присвоена на променлива, то това е „статично обвързване“. ако това стане известно по време на изпълнение, то се нарича „динамично свързване“.

  1. Сравнителна диаграма
  2. дефиниция
  3. Ключови разлики
  4. заключение

Сравнителна диаграма:

Основа за сравнениеСтатично свързванеДинамично свързване
Събитие на събитиетоСъбития, които се случват по време на компилиране, са "Статично обвързване".
Събитията, които се случват по време на изпълнение, са "Динамично обвързване".
ИнформацияЦялата информация, необходима за извикване на функция, е известна по време на компилиране.Цялата информация, която трябва да се обадите на функция, се запознайте по време на изпълнение.
предимствоЕфективност.Гъвкавост.
пътБързо изпълнение.Бавно изпълнение.
Алтернативно имеРанно обвързване.Късно обвързване.
примерПретоварено повикване на функция, претоварени оператори.Виртуална функция в C ++, преобърнати методи в Java.

Определения за статично свързване

Когато компилаторът разпознае цялата информация, необходима за извикване на функция или всички стойности на променливите по време на компилиране, тя се нарича „статично свързване". Тъй като цялата необходима информация е известна преди изпълнение, тя повишава ефективността на програмата и също така повишава скоростта на изпълнение на програмата.


Статичното свързване прави програмата много ефективна, но тя намалява гъвкавостта на програмата, тъй като в програмата са зададени „стойности на променливата“ и „извикване на функция“. Статичното свързване се осъществява в програма по време на кодирането.

Претоварването на функция или оператор е пример за полиморфизъм във време на компилиране, т.е. статично свързване.

Реализиране на статично свързване в C ++ с пример за претоварване

#include използване на stdpace пространство на имената; клас претоварване {int a, b; public: функция int load (int x) {// първа функция load (). а = х; cout << "Стойността на x е" <Funct (); // Горното изречение решава кои класове да се извикат. р = & d1; // Vlaue на показалеца се променя. р> Funct (); // Горното изречение решава кои класове да се извикат. р = & d2; // Отново vlaue на показалеца се променя. р> Funct (); // Горното изречение решава кои класове да се извикат. връщане 0; }

Тук стойността на показалеца се променя, докато програмата се изпълнява и стойността на показалеца решава коя функция на класа ще бъде извикана. Така че тук информацията се предоставя по време на изпълнение, отнема време да се обвържат данните, което забавя изпълнението.


  1. Събития, които се случват по време на компилиране, като функционален код е свързан с извикване на функция или присвояване на стойност на променлива, се наричат ​​статично / ранното свързване. Напротив, когато тези задачи се изпълняват по време на изпълнение, те се наричат ​​динамично / късно свързване.
  2. „Ефективността“ се увеличава при статично свързване, тъй като всички данни се събират преди изпълнението. Но при динамично свързване данните се получават по време на изпълнение, така че можем да решим каква стойност да присвоим променлива и коя функция да се извиква по време на изпълнение, това прави изпълнението "гъвкаво".
  3. „Статичното обвързване“ прави изпълнението на програма „по-бързо“, тъй като всички данни, необходими за изпълнение на програмата, са известни преди изпълнението. В „динамичното свързване“ данните, необходими за изпълнение на програма, са известни на компилатора по време на изпълнението, което отнема време за обвързване на стойности с идентификатори; следователно, прави изпълнението на програмата по-бавно.
  4. Статичното свързване се нарича още ранното свързване, тъй като функционалният код е свързан с извикване на функция по време на компилиране, което е по-рано от динамичното свързване, при което функционалният код е свързан с функционалното повикване по време на изпълнение, следователно се нарича и късно свързване.

Заключение:

Въпреки това, заключаваме, че когато имаме предварително познаване на стойностите на променливата и функцията призоваване, ние прилагаме статичното свързване. И обратно, в динамичното свързване ние предоставяме цялата информация в момента на изпълнение.