Polymorphismus bedeutet die Fähigkeit, mehr als eine Form anzunehmen. Polymorphismus gilt als eines der wichtigsten Merkmale der objektorientierten Programmierung. In C++ wird Polymorphismus hauptsächlich in zwei Typen eingeteilt, Kompilierzeitpolymorphismus (statisch) oder (dynamischer) Laufzeitpolymorphismus. Beim dynamischen Polymorphismus wird die Antwort auf eine Funktion zur Laufzeit bestimmt, während beim statischen Polymorphismus die Antwort auf eine Funktion zur Kompilierzeit bestimmt wird.
Contents
Kompilierzeitpolymorphismus (statischer Polymorphismus)
Kompilierzeitpolymorphismus, auch als statischer Polymorphismus bezeichnet , wird durch funktionale Überladung oder Operatorüberladung erreicht.
Funktionale Überlastung
Wenn mehrere Funktionen mit demselben Namen, aber unterschiedlichen Parametern vorhanden sind, werden diese Funktionen als überladen bezeichnet. Funktionen können durch Änderung der Anzahl oder Art der Argumente überladen werden.
Bedienerüberlastung
C++ bietet auch die Möglichkeit, Operatoren zu überladen. Zum Beispiel können wir den Operator (‘+’) für die String-Klasse dazu bringen, zwei Strings zu verketten. Wir wissen, dass dies der zusätzliche Operator ist, dessen Aufgabe es ist, zwei Operanden zu addieren. Daher fügt ein einzelner Operator ‘+’, wenn er zwischen Integer-Operanden platziert wird, diese hinzu und wenn er zwischen String-Operanden platziert wird, verkettet er sie.
Was Sie über die Kompilierzeit wissen müssen
- Die Bindung des Funktionsaufrufs und die Auswahl der richtigen Funktionsdeklaration erfolgt durch den Compiler zum Zeitpunkt der Kompilierung.
- Der Kompilierzeit-Polymorphismus wird durch das Überladen von Funktionen und das Überladen von Operatoren erreicht.
- Die Eigenschaften und das Verhalten des Kompilierzeit-Polymorphismus sind klassische Beispiele für statische Bindung/statische Auflösung.
- Beim Polymorphismus zur Kompilierzeit wird der Aufruf vom Compiler aufgelöst.
- Überladen ist ein Polymorphismus zur Kompilierzeit, bei dem mehr als eine Methode denselben Namen mit unterschiedlichen Parametern oder Signaturen und unterschiedlichen Rückgabetypen hat.
- Der Polymorphismus zur Kompilierzeit ist weniger flexibel, da alle Dinge zur Kompilierzeit ausgeführt werden.
- Es bietet eine schnelle Ausführung, da es früh zur Kompilierzeit bekannt ist.
Laufzeitpolymorphismus (dynamischer Polymorphismus)
Laufzeitpolymorphismus, auch als dynamischer Polymorphismus bezeichnet, wird normalerweise durch Funktionsüberschreibung erreicht. Das Überschreiben von Funktionen tritt auf, wenn eine abgeleitete Klasse eine Definition für eine der Memberfunktionen der Basisklasse hat. Die Basisfunktion wird als überschrieben bezeichnet.
Was Sie über Laufzeitpolymorphismus wissen müssen
- Die Bindung erfolgt zur Laufzeit.
- Laufzeitpolymorphismus wird durch virtuelle Funktionen und Zeiger erreicht.
- Die Eigenschaften und das Verhalten des Laufzeitpolymorphismus sind klassische Beispiele für dynamisches Binden und spätes Binden.
- Beim Laufzeitpolymorphismus wird der Aufruf vom Compiler nicht aufgelöst.
- Das Überschreiben ist ein Laufzeitpolymorphismus mit derselben Methode mit denselben Parametern oder derselben Signatur, der jedoch einer Klasse und ihrer Unterklasse zugeordnet ist.
- Der Laufzeitpolymorphismus ist flexibler, da alle Dinge zur Laufzeit ausgeführt werden.
- Sie bietet im Vergleich zur frühen Bindung eine langsame Ausführung, da sie zur Laufzeit bekannt ist.
Lesen Sie auch: Unterschied zwischen Stack und Heap in C++
Kompilierungszeit- und Laufzeitpolymorphismus in Tabellenform
VERGLEICHSGRUNDLAGE | ZEITPOLYMORPHISMUS KOMPILIEREN | LAUFZEIT-POLYMORPHISMUS |
Bindung | Die Bindung des Funktionsaufrufs und die Auswahl der richtigen Funktionsdeklaration erfolgt durch den Compiler zum Zeitpunkt der Kompilierung. | Die Bindung erfolgt zur Laufzeit. |
Wie es erreicht wird | Der Kompilierzeit-Polymorphismus wird durch das Überladen von Funktionen und das Überladen von Operatoren erreicht. | Laufzeitpolymorphismus wird durch virtuelle Funktionen und Zeiger erreicht. |
Eigenschaften und Verhalten | Die Eigenschaften und das Verhalten des Kompilierzeit-Polymorphismus sind klassische Beispiele für statische Bindung/statische Auflösung. | Die Eigenschaften und das Verhalten des Laufzeitpolymorphismus sind klassische Beispiele für dynamisches Binden und spätes Binden. |
Anruf | Beim Polymorphismus zur Kompilierzeit wird der Aufruf vom Compiler aufgelöst. | Beim Laufzeitpolymorphismus wird der Aufruf vom Compiler nicht aufgelöst. |
Überschreiben | Überladen ist ein Polymorphismus zur Kompilierzeit, bei dem mehr als eine Methode denselben Namen mit unterschiedlichen Parametern oder Signaturen und unterschiedlichen Rückgabetypen hat. | Das Überschreiben ist ein Laufzeitpolymorphismus mit derselben Methode mit denselben Parametern oder derselben Signatur, der jedoch einer Klasse und ihrer Unterklasse zugeordnet ist. |
Flexibilität | Der Polymorphismus zur Kompilierzeit ist weniger flexibel, da alle Dinge zur Kompilierzeit ausgeführt werden. | Der Laufzeitpolymorphismus ist flexibler, da alle Dinge zur Laufzeit ausgeführt werden. |
Ausführungsgeschwindigkeit | Es bietet eine schnelle Ausführung, da es früh zur Kompilierzeit bekannt ist. | Sie bietet im Vergleich zur frühen Bindung eine langsame Ausführung, da sie zur Laufzeit bekannt ist. |
Lesen Sie auch : Unterschied zwischen prozeduraler und objektorientierter Programmierung