Різниця між статичним та динамічним зв'язуванням
Зміст
- Порівняльна діаграма:
- Визначення статичного зв'язування
- Здійснення статичного зв'язування в C ++ з прикладом перевантаження
- Висновок:
Прив'язка асоціації 'визначення функції' до 'виклику функції' або асоціації 'значення' до 'змінної' називається 'прив'язкою'. Під час компіляції кожному «визначенню функції» надається адреса пам’яті; як тільки виклик функції виконується, контроль виконання програми переміщується на цю адресу пам'яті і отримує код функції, який зберігається в цьому місці, це прив'язка «виклику функції» до «визначення функції». Зв'язування можна класифікувати як "статичне зв'язування" та "динамічне зв'язування".
Якщо перед виконанням вже відомо, яка функція буде викликана або яке значення буде присвоєно змінній, то це "статична прив'язка". якщо це дізнається під час виконання, то його називають "динамічним зв'язуванням".
- Порівняльна діаграма
- Визначення
- Ключові відмінності
- Висновок
Порівняльна діаграма:
Основа для порівняння | Статичне зв'язування | Динамічне зв'язування |
---|---|---|
Подія події | Події, що відбуваються під час компіляції, є "Статичне прив'язування". | Події, що відбуваються під час виконання, є "Динамічне прив'язування". |
Інформація | Вся інформація, необхідна для виклику функції, відома під час компіляції. | Вся інформація, необхідна для виклику функції, дізнається під час виконання. |
Перевага | Ефективність. | Гнучкість. |
Час | Швидке виконання. | Повільне виконання. |
Інша назва | Раннє зв’язування. | Пізнє зв’язування. |
Приклад | Перевантажений функціональний дзвінок, перевантажені оператори. | Віртуальна функція в C ++, переосмислені методи в Java. |
Визначення статичного зв'язування
Коли компілятор визнає всю інформацію, необхідну для виклику функції або всі значення змінних протягом часу компіляції, вона називається "статичне зв'язування". Оскільки вся необхідна інформація відома перед виконанням, вона підвищує ефективність програми, а також підвищує швидкість виконання програми.
Статичне прив'язування робить програму дуже ефективною, але вона знижує гнучкість програми, оскільки в програмі визначені "значення змінної" та "виклик функції". Статичне прив'язування реалізується в програмі під час кодування.
Перевантаження функції або оператора є прикладом поліморфізму часу компіляції, тобто статичного зв'язування.
Здійснення статичного зв'язування в C ++ з прикладом перевантаження
#включати Тут значення вказівника змінюється під час виконання програми, і значення вказівника визначає, яку функцію класу буде викликати. Отже, тут інформація надається під час виконання, потрібен час для прив’язки даних, що уповільнює виконання. Однак ми робимо висновок, що коли ми маємо попередні знання про значення змінної та виклику функції, ми застосовуємо статичну прив'язку. І навпаки, в динамічному Binding ми надаємо всю інформацію під час виконання.
Висновок: