Різниця між статичним та динамічним зв'язуванням

Автор: Laura McKinney
Дата Створення: 1 Квітень 2021
Дата Оновлення: 5 Травень 2024
Anonim
Різниця між статичним та динамічним зв'язуванням - Технологія
Різниця між статичним та динамічним зв'язуванням - Технологія

Зміст


Прив'язка асоціації 'визначення функції' до 'виклику функції' або асоціації 'значення' до 'змінної' називається 'прив'язкою'. Під час компіляції кожному «визначенню функції» надається адреса пам’яті; як тільки виклик функції виконується, контроль виконання програми переміщується на цю адресу пам'яті і отримує код функції, який зберігається в цьому місці, це прив'язка «виклику функції» до «визначення функції». Зв'язування можна класифікувати як "статичне зв'язування" та "динамічне зв'язування".

Якщо перед виконанням вже відомо, яка функція буде викликана або яке значення буде присвоєно змінній, то це "статична прив'язка". якщо це дізнається під час виконання, то його називають "динамічним зв'язуванням".

  1. Порівняльна діаграма
  2. Визначення
  3. Ключові відмінності
  4. Висновок

Порівняльна діаграма:

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

Визначення статичного зв'язування

Коли компілятор визнає всю інформацію, необхідну для виклику функції або всі значення змінних протягом часу компіляції, вона називається "статичне зв'язування". Оскільки вся необхідна інформація відома перед виконанням, вона підвищує ефективність програми, а також підвищує швидкість виконання програми.


Статичне прив'язування робить програму дуже ефективною, але вона знижує гнучкість програми, оскільки в програмі визначені "значення змінної" та "виклик функції". Статичне прив'язування реалізується в програмі під час кодування.

Перевантаження функції або оператора є прикладом поліморфізму часу компіляції, тобто статичного зв'язування.

Здійснення статичного зв'язування в C ++ з прикладом перевантаження

#включати використання простору імен std; перевантаження класу {int a, b; public: функція int load (int x) {// функція first load (). a = x; cout << "Значення x є" <funct (); // Вищенаведене твердження визначає, які функції класів слід викликати. p = & d1; // Влає вказівника змінюється. p-> funct (); // Вищенаведене твердження визначає, які функції класів слід викликати. p = & d2; // Знову змінюється vlaue покажчика. p-> funct (); // Вищенаведене твердження визначає, які функції класів слід викликати. повернути 0; }

Тут значення вказівника змінюється під час виконання програми, і значення вказівника визначає, яку функцію класу буде викликати. Отже, тут інформація надається під час виконання, потрібен час для прив’язки даних, що уповільнює виконання.


  1. Події, які трапляються під час компіляції, наприклад, код функції, пов'язаний з викликом функції або присвоєнням значення змінній, називаються статичним / ранньою прив'язкою. Навпаки, коли ці завдання виконуються під час виконання, вони називаються динамічними / пізніми прив'язками.
  2. "Ефективність" збільшується в статичному прив'язці, оскільки всі дані збираються перед виконанням. Але в динамічному прив'язці дані отримуються під час виконання, тому ми можемо вирішити, яке значення призначити змінній та яку функцію викликати під час виконання, це робить виконання "гнучким".
  3. "Статична прив'язка" робить виконання програми "швидшим", оскільки всі дані, необхідні для виконання програми, відомі перед виконанням. У "динамічному прив'язці" дані, необхідні для виконання програми, відомі компілятору під час виконання, що вимагає часу для прив'язки значень до ідентифікаторів; отже, це робить програму повільнішою.
  4. Статичне прив'язування також називається ранньою прив'язкою, оскільки код функції асоціюється з викликом функції під час компіляції, що є раніше, ніж динамічне Прив'язування, у якому функціональний код пов'язаний з викликом функції під час виконання, тому він також називається пізнім зв'язуванням.

Висновок:

Однак ми робимо висновок, що коли ми маємо попередні знання про значення змінної та виклику функції, ми застосовуємо статичну прив'язку. І навпаки, в динамічному Binding ми надаємо всю інформацію під час виконання.