Różnica między wiązaniem statycznym i dynamicznym
Zawartość
- Wykres porównania:
- Definicje wiązania statycznego
- Implementacja wiązania statycznego w C ++ na przykładzie przeciążenia
- Wniosek:
Powiązanie „definicji funkcji” z „wywołaniem funkcji” lub powiązanie „wartości” z „zmienną” nazywa się „wiązaniem”. Podczas kompilacji każda „definicja funkcji” otrzymuje adres pamięci; jak tylko wywołanie funkcji zostanie wykonane, kontrola wykonania programu przechodzi na ten adres pamięci i wykonuje kod funkcji zapisany w tej lokalizacji, jest to Powiązanie „wywołania funkcji” z „definicją funkcji”. Wiązanie można sklasyfikować jako „wiązanie statyczne” i „wiązanie dynamiczne”.
Jeśli przed wykonaniem wiadomo już, która funkcja zostanie wywołana lub jaka wartość zostanie przypisana do zmiennej, jest to „wiązanie statyczne”. jeśli dowie się o tym w czasie wykonywania, nazywa się to „dynamicznym wiązaniem”.
- Wykres porównania
- Definicja
- Kluczowe różnice
- Wniosek
Wykres porównania:
Podstawa do porównania | Wiązanie statyczne | Dynamiczne wiązanie |
---|---|---|
Wystąpienie zdarzenia | Zdarzenia występujące w czasie kompilacji są „wiązaniem statycznym”. | Zdarzenia występujące w czasie wykonywania to „Dynamiczne wiązanie”. |
Informacja | Wszystkie informacje potrzebne do wywołania funkcji są znane w czasie kompilacji. | Wszystkie informacje muszą wywoływać funkcję poznaną w czasie wykonywania. |
Korzyść | Wydajność. | Elastyczność. |
Czas | Szybka realizacja. | Powolna realizacja. |
Alternatywna nazwa | Wczesne wiązanie. | Późne wiązanie. |
Przykład | Przeciążone wywołanie funkcji, przeciążone operatory. | Funkcja wirtualna w C ++, przesłonięte metody w Javie. |
Definicje wiązania statycznego
Gdy kompilator potwierdzi wszystkie informacje wymagane do wywołania funkcji lub wszystkie wartości zmiennych w czasie kompilacji, nazywa się to „wiązanie statyczne„. Ponieważ wszystkie wymagane informacje są znane przed uruchomieniem, zwiększa wydajność programu, a także przyspiesza wykonanie programu.
Wiązanie statyczne sprawia, że program jest bardzo wydajny, ale zmniejsza elastyczność programu, ponieważ „wartości zmiennej” i „wywołanie funkcji” są wstępnie zdefiniowane w programie. Wiązanie statyczne jest implementowane w programie w momencie kodowania.
Przeciążenie funkcji lub operatora jest przykładem polimorfizmu w czasie kompilacji, tj. Wiązania statycznego.
Implementacja wiązania statycznego w C ++ na przykładzie przeciążenia
#zawierać Tutaj wartość wskaźnika zmienia się, gdy program jest wykonywany, a wartość wskaźnika decyduje, która funkcja klasy zostanie wywołana. Tak więc tutaj informacje są podawane w czasie wykonywania, czas wiązania danych jest spowalniany. Jednak dochodzimy do wniosku, że gdy mamy wcześniejszą wiedzę na temat wartości wywoływania zmiennych i funkcji, stosujemy wiązanie statyczne. I odwrotnie, w dynamicznym wiązaniu udostępniamy wszystkie informacje w momencie wykonania.
Wniosek: