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, 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.
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.
Lesen Sie auch: Unterschied zwischen Stack und Heap in C++
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
Burger oder Döner? Zwei kulinarische Titanen, die die Herzen (und Mägen) von Millionen Menschen weltweit…
Haben Sie sich jemals gefragt, ob es einen Unterschied zwischen dem Lesen eines Buches und…
Stellen Sie sich vor, Sie sitzen in einem Diner und haben gerade einen saftigen Burger…
🍎 vs 🍏 - Ein knackiger Vergleich! Haben Sie sich jemals gefragt, warum es rote…
Haben Sie sich jemals gefragt, warum Sie manchmal bei Einkäufen Ihre PIN eingeben müssen und…
Haben Sie sich jemals gefragt, warum Ärzte manchmal eine CT-Untersuchung und in anderen Fällen ein…