Unterschied zwischen statischer und dynamischer Bindung
![Java 2: Statischer Typ vs. dynamischer Typ](https://i.ytimg.com/vi/w4U-MkcLunU/hqdefault.jpg)
Inhalt
- Vergleichstabelle:
- Definitionen der statischen Bindung
- Implementierung der statischen Bindung in C ++ mit einem Beispiel für Überladung
- Fazit:
Die Verknüpfung einer Funktionsdefinition mit einem Funktionsaufruf oder die Verknüpfung eines Werts mit einer Variablen wird als Bindung bezeichnet. Während des Kompilierens erhält jede 'Funktionsdefinition' eine Speicheradresse. Sobald ein Funktionsaufruf erfolgt ist, wird die Programmausführungssteuerung auf diese Speicheradresse verschoben und der an dieser Stelle gespeicherte Funktionscode ausgeführt. Dies ist die Bindung von Funktionsaufruf an Funktionsdefinition. Die Bindung kann in "statische Bindung" und "dynamische Bindung" unterteilt werden.
Wenn vor der Laufzeit bereits bekannt ist, welche Funktion aufgerufen wird oder welcher Wert einer Variablen zugewiesen wird, handelt es sich um eine statische Bindung. Wenn es zur Laufzeit bekannt wird, spricht man von dynamischem Binden.
- Vergleichstabelle
- Definition
- Hauptunterschiede
- Fazit
Vergleichstabelle:
Vergleichsbasis | Statische Bindung | Dynamische Bindung |
---|---|---|
Ereignisauftritt | Ereignisse, die zur Kompilierungszeit auftreten, sind "Static Binding". | Ereignisse, die zur Laufzeit auftreten, sind "Dynamische Bindung". |
Information | Alle zum Aufrufen einer Funktion erforderlichen Informationen sind zum Zeitpunkt der Kompilierung bekannt. | Alle Informationen, die zum Aufrufen einer Funktion benötigt werden, werden zur Laufzeit bekannt. |
Vorteil | Effizienz. | Flexibilität. |
Zeit | Schnelle Ausführung. | Langsame Ausführung. |
anderer Name | Frühe Bindung. | Späte Bindung. |
Beispiel | Überladener Funktionsaufruf, überladene Operatoren. | Virtuelle Funktion in C ++, überschriebene Methoden in Java. |
Definitionen der statischen Bindung
Wenn der Compiler alle Informationen, die zum Aufrufen einer Funktion erforderlich sind, oder alle Werte der Variablen während der Kompilierungszeit bestätigt, wird dies als "" bezeichnet.statische Bindung“. Da alle erforderlichen Informationen vor der Laufzeit bekannt sind, wird die Effizienz des Programms erhöht und die Ausführungsgeschwindigkeit eines Programms erhöht.
Die statische Bindung macht ein Programm sehr effizient, verringert jedoch die Programmflexibilität, da die Werte der Variablen und der Funktionsaufruf im Programm vordefiniert sind. Die statische Bindung wird zum Zeitpunkt der Codierung in einem Programm implementiert.
Das Überladen einer Funktion oder eines Operators ist das Beispiel für einen Polymorphismus zur Kompilierungszeit, d. H. Eine statische Bindung.
Implementierung der statischen Bindung in C ++ mit einem Beispiel für Überladung
#umfassen Hier ändert sich der Wert des Zeigers, während das Programm ausgeführt wird, und der Wert des Zeigers entscheidet, welche Funktion der Klasse aufgerufen wird. Wenn die Informationen zur Laufzeit bereitgestellt werden, dauert es einige Zeit, die Daten zu binden, wodurch die Ausführung verlangsamt wird. Wir kommen jedoch zu dem Schluss, dass wir die statische Bindung anwenden, wenn wir die Werte des Variablen- und Funktionsaufrufs bereits kennen. Umgekehrt stellen wir in Dynamic Binding alle Informationen zum Zeitpunkt der Ausführung bereit.
Fazit: