Unterschied zwischen statischer und dynamischer Bindung

Autor: Laura McKinney
Erstelldatum: 1 April 2021
Aktualisierungsdatum: 1 Juli 2024
Anonim
Java 2: Statischer Typ vs. dynamischer Typ
Video: Java 2: Statischer Typ vs. dynamischer Typ

Inhalt


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.

  1. Vergleichstabelle
  2. Definition
  3. Hauptunterschiede
  4. Fazit

Vergleichstabelle:

VergleichsbasisStatische BindungDynamische Bindung
EreignisauftrittEreignisse, die zur Kompilierungszeit auftreten, sind "Static Binding".
Ereignisse, die zur Laufzeit auftreten, sind "Dynamische Bindung".
InformationAlle 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.
VorteilEffizienz.Flexibilität.
ZeitSchnelle Ausführung.Langsame Ausführung.
anderer NameFrü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 using namespace std; Klassenüberladung {int a, b; public: int load (int x) {// erste load () Funktion. a = x; cout << "Der Wert von x ist" <funct (); // Die obige Anweisung entscheidet, welche Klassenfunktion aufgerufen werden soll. p = & d1; // Wert des Zeigers ändert sich. p-> funct (); // Die obige Anweisung entscheidet, welche Klassenfunktion aufgerufen werden soll. p = & d2; // Wieder ändert sich der Wert des Zeigers. p-> funct (); // Die obige Anweisung entscheidet, welche Klassenfunktion aufgerufen werden soll. return 0; }

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.


  1. Ereignisse, die zur Kompilierungszeit auftreten, wie beispielsweise, dass ein Funktionscode mit einem Funktionsaufruf oder einer Zuweisung von Werten zu einer Variablen verknüpft ist, werden als statische / frühe Bindung bezeichnet. Im Gegensatz dazu werden diese Aufgaben, wenn sie zur Laufzeit ausgeführt werden, als dynamische / späte Bindung bezeichnet.
  2. Die statische Bindung wird effizienter, da alle Daten vor der Ausführung erfasst werden. Bei der dynamischen Bindung werden die Daten jedoch zur Laufzeit erfasst, sodass wir entscheiden können, welcher Wert einer Variablen zugewiesen werden soll und welche Funktion zur Laufzeit aufgerufen werden soll. Dadurch wird die Ausführung "flexibel".
  3. Statische Bindung beschleunigt die Ausführung eines Programms, da alle zur Ausführung eines Programms erforderlichen Daten vor der Ausführung bekannt sind. Beim "dynamischen Binden" sind dem Compiler die zur Ausführung eines Programms erforderlichen Daten zum Zeitpunkt der Ausführung bekannt, da dieser Zeit benötigt, um Werte an Bezeichner zu binden. Daher wird die Programmausführung langsamer.
  4. Die statische Bindung wird auch als frühe Bindung bezeichnet, da der Funktionscode während der Kompilierungszeit dem Funktionsaufruf zugeordnet ist. Dies ist früher als die dynamische Bindung, bei der der Funktionscode während der Laufzeit dem Funktionsaufruf zugeordnet ist. Daher wird sie auch als späte Bindung bezeichnet.

Fazit:

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.