Разлика между статично и динамично свързване
![Ошибки в сантехнике. Вводной узел в квартиру.](https://i.ytimg.com/vi/Cj2U_wVlG-I/hqdefault.jpg)
Съдържание
- Сравнителна диаграма:
- Определения за статично свързване
- Реализиране на статично свързване в C ++ с пример за претоварване
- Заключение:
Обвързването на свързване на 'дефиниция на функция' към 'функционално обаждане' или свързване на 'стойност' към 'променлива', се нарича 'свързване'. По време на компилирането, на всяко „определение на функцията“ се дава адрес на паметта; щом извикването на функция е извършено, контролът върху изпълнението на програмата се премества на този адрес на паметта и се изпълнява кодът на функцията, съхраняван на това място, това е обвързване на „извикване на функция“ към „определение на функцията“. Свързването може да бъде класифицирано като „статично свързване“ и „динамично свързване“.
Ако вече е известно преди изпълнение, коя функция ще бъде извикана или каква стойност е присвоена на променлива, то това е „статично обвързване“. ако това стане известно по време на изпълнение, то се нарича „динамично свързване“.
- Сравнителна диаграма
- дефиниция
- Ключови разлики
- заключение
Сравнителна диаграма:
Основа за сравнение | Статично свързване | Динамично свързване |
---|---|---|
Събитие на събитието | Събития, които се случват по време на компилиране, са "Статично обвързване". | Събитията, които се случват по време на изпълнение, са "Динамично обвързване". |
Информация | Цялата информация, необходима за извикване на функция, е известна по време на компилиране. | Цялата информация, която трябва да се обадите на функция, се запознайте по време на изпълнение. |
предимство | Ефективност. | Гъвкавост. |
път | Бързо изпълнение. | Бавно изпълнение. |
Алтернативно име | Ранно обвързване. | Късно обвързване. |
пример | Претоварено повикване на функция, претоварени оператори. | Виртуална функция в C ++, преобърнати методи в Java. |
Определения за статично свързване
Когато компилаторът разпознае цялата информация, необходима за извикване на функция или всички стойности на променливите по време на компилиране, тя се нарича „статично свързване". Тъй като цялата необходима информация е известна преди изпълнение, тя повишава ефективността на програмата и също така повишава скоростта на изпълнение на програмата.
Статичното свързване прави програмата много ефективна, но тя намалява гъвкавостта на програмата, тъй като в програмата са зададени „стойности на променливата“ и „извикване на функция“. Статичното свързване се осъществява в програма по време на кодирането.
Претоварването на функция или оператор е пример за полиморфизъм във време на компилиране, т.е. статично свързване.
Реализиране на статично свързване в C ++ с пример за претоварване
#include Тук стойността на показалеца се променя, докато програмата се изпълнява и стойността на показалеца решава коя функция на класа ще бъде извикана. Така че тук информацията се предоставя по време на изпълнение, отнема време да се обвържат данните, което забавя изпълнението. Въпреки това, заключаваме, че когато имаме предварително познаване на стойностите на променливата и функцията призоваване, ние прилагаме статичното свързване. И обратно, в динамичното свързване ние предоставяме цялата информация в момента на изпълнение.
Заключение: