Разница между статическим и динамическим связыванием
![Раннее и Позднее Связывание](https://i.ytimg.com/vi/oDpns6k9-iU/hqdefault.jpg)
Содержание
- Сравнительная таблица:
- Определения статического связывания
- Реализация статического связывания в C ++ с примером перегрузки
- Вывод:
Связывание ассоциации «определения функции» с «вызовом функции» или ассоциации «значения» с «переменной» называется «привязкой». Во время компиляции каждому «определению функции» присваивается адрес памяти; как только вызов функции выполнен, управление выполнением программы перемещается по этому адресу памяти и получает код функции, сохраненный в этом месте выполнения, это связывание «вызова функции» с «определением функции». Связывание можно классифицировать как «статическое связывание» и «динамическое связывание».
Если до выполнения уже известно, какая функция будет вызвана или какое значение выделено для переменной, то это «статическая привязка». если он узнает во время выполнения, он называется «динамическое связывание».
- Сравнительная таблица
- Определение
- Ключевые отличия
- Вывод
Сравнительная таблица:
Основа для сравнения | Статическое связывание | Динамическое связывание |
---|---|---|
Событие Происшествие | События происходят во время компиляции "Статическое связывание". | События происходят во время выполнения «Динамическое связывание». |
Информация | Вся информация, необходимая для вызова функции, известна во время компиляции. | Вся информация, необходимая для вызова функции, должна быть известна во время выполнения. |
преимущество | Эффективность. | Гибкость. |
Время | Быстрое исполнение. | Медленное исполнение. |
Альтернативное имя | Раннее связывание. | Позднее связывание. |
пример | Перегрузка вызова функции, перегруженные операторы. | Виртуальная функция в C ++, переопределенные методы в Java. |
Определения статического связывания
Когда компилятор подтверждает всю информацию, необходимую для вызова функции, или все значения переменных во время компиляции, он называется «статическое связывание«. Поскольку вся необходимая информация известна до выполнения, это повышает эффективность программы, а также повышает скорость ее выполнения.
Статическое связывание делает программу очень эффективной, но она снижает гибкость программы, так как «значения переменной» и «вызов функции» предопределены в программе. Статическое связывание реализуется в программе во время кодирования.
Перегрузка функции или оператора является примером полиморфизма во время компиляции, то есть статического связывания.
Реализация статического связывания в C ++ с примером перегрузки
#включают Здесь значение указателя изменяется во время выполнения программы, а значение указателя решает, какая функция класса будет вызвана. Итак, здесь информация предоставляется во время выполнения, требуется время, чтобы связать данные, что замедляет выполнение. Тем не менее, мы заключаем, что, когда у нас есть предварительные знания о значениях вызовов переменных и функций, мы применяем статическое связывание. И наоборот, в динамическом связывании мы предоставляем всю информацию во время выполнения.
Вывод: