Polymorphismus in C ++ - Beispielen

Polymorphismus in C ++ - Beispielen
Polymorphismus, der „verschiedene Formen“ impliziert, tritt auf, wenn mehrere Klassen durch Vererbung verbunden sind. Unter verschiedenen Kontexten wirkt genau das gleiche (Methode oder Operator) unterschiedlich. Wir können Eigenschaften und Funktionen einer anderen Klasse durch Vererbung erben. Polymorphismus verwendet diese Techniken für eine Vielzahl von Zwecken. Dies ermöglicht es uns, eine bestimmte Aktivität auf verschiedene Weise auszuführen. Daher werden wir in diesem Artikel Beispiele für Polymorphismus in C ++ unter Verwendung einiger Beispiele innerhalb von Ubuntu 20 diskutieren.04. Wir haben damit begonnen, eine neue C ++ - Datei in der Terminalkonsole zu erstellen und zu starten.
$ Touch Polymorphismus.CC
$ nano Polymorphismus.CC

Beispiel 01: Funktion Überladen

Wenn ihre Argumente eindeutig sind, können Sie zwei Hauptfunktionen mit demselben Titel in C nutzen++. Verschiedene Methoden basieren auf der Menge und der Art von Parametern, und dieses Konzept wird als Funktionsüberlastung bezeichnet. Wir haben unser erstes Beispiel mit dem Standard "STD" -Namenspace und "iOstream" -Putput-Header gestartet. Es werden drei benutzerdefinierte Namen „Val“ -Funktionen definiert, die jeweils eine einzelne Cout-Anweisung enthalten. Die erste Funktion enthält einen Integer-Typparameter, die zweite den Parameter Double-Type und der letzte enthält zwei Parameter vom Doppeltyp. Die ersten beiden "Val" -Funktionen erhalten einfach einen Wert aus der Main () -Methode und zeigen sie über die Cout -Anweisung auf der Shell an. Der dritte erhält zwei Doppelwerte vom Main () und zeigt die Summe beider Werte auf der Schale mit Hilfe der Cout-Klausel an. In der Funktion main () wird einfach drei gleichnamige Methoden nacheinander aufgerufen, indem sie verschiedene Werte übergeben.

#enthalten
Verwenden von Namespace STD;
int val (int n1)
Cout <<"Integer: "<< n1 <
Double Val (Double N1)
Cout <<"Double: "<< n1 <
Double Val (Double N1, Double N2)
Cout << "Sum: "<< n1+n2<
int main ()
Val (10);
Val (9.25);
Val (4.1, 8.23);
Rückkehr 0;

Die Zusammenstellung dieses C ++ - Code ist erfolgreich mit dem G ++ - Compiler auf der Shell.

$ G ++ Polymorphismus.CC

Nachdem der Code ausgeführt wurde, werden die Werte auf der folgenden Konsole angezeigt.

$ ./A.aus

Beispiel 02: Bedienerüberlastung

Die Überladung des Bedieners ähnelt der Überlastung der Methode, da das gleiche Zeichen, jedoch verschiedene Operanden für verschiedene Bedienungsmethoden verwendet werden. Wir haben dieses Beispiel damit gestartet, indem wir nach dem Namespace und Header -Bibliothek eine neue Klasse „A“ deklariert haben. Klasse A enthält ein privates Datenmitglied des Ganzzahltyps "V" und eine Konstruktorfunktion a (), mit der die Variable "V" mit einem Wert von 5 initialisiert wird. Hier kommt die Bedienerfunktion, um den Wert von „V“ um 3 zu erhöhen. Wie der Name zeigt, wurde der Bediener „+“ hier überladen. Die Funktion show () ist hier, um den inkrementierten Wert einer Variablen zu zeigen, „V.Bei der Erstellung eines Objekts wird der Konstruktor A () ausgeführt. Das Objekt wurde verwendet, um die Funktion "++" -Operator aufzurufen. Der OBJ wird erneut verwendet, um die Funktion show () aufzurufen, um den inkrementierten Wert anzuzeigen.

#enthalten
Verwenden von Namespace STD;
Klasse a
Privatgelände:
im Fernsehen;
öffentlich:
A (): v (5)
Void -Operator ++ ()
v = v + 3;

void show ()
Cout << "Value after increment: " << v << endl;

;
int main ()
Ein obj;
++obj;
obj.zeigen();
Rückkehr 0;

Nach der Zusammenstellung haben wir keine Fehler. Der inkrementierte Wert der Variablen „V“ wurde auf unserem Terminalbildschirm nach Ausführen dieses Codes angezeigt.

$ G ++ Polymorphismus.CC
$ ./A.aus

Beispiel 03: Funktion überschreiben

Die Basisklasse und ihre Nachkommensunterklassen können die gleichen Namensmethoden haben. Wenn wir eine Instanz aus der Unterklasse verwenden, um die Methode aufzurufen, wird die Funktion der erweiterten Klasse eher ausgeführt als die übergeordnete Klasse. Infolgedessen werden verschiedene Funktionen abhängig von dem Objekt ausgeführt, das die Methode aufgerufen hat. In C ++ wird dies als Überschreiben der Methode bezeichnet. Wir haben also drei Klassen im Code initialisiert. Klasse A ist die übergeordnete Klasse beider Kinderklassen B und C. Alle Klassen haben die gleichnamige Funktion "show ()", die seine Spezifikationen über eine Cout -Anweisung anzeigt. Die Main () -Methode hat 3 Objekte für 3 Klassen erstellt, um die jeweiligen Funktionen aufzurufen.

#enthalten
Verwenden von Namespace STD;
Klasse a
öffentlich:
void show ()
Cout << "Base class A… " << endl;
;
Klasse B: public a
öffentlich:
void show ()
Cout << "Derived class B… " << endl;
;
Klasse C: public a
öffentlich:
void show ()
Cout << "Derived class C… " << endl;
;
int main ()
Ein O1;
O1.zeigen();
B o2;
O2.zeigen();
C o3;
O3.zeigen();
Rückkehr 0;

Wir haben alle Methoden aus allen Klassen ausgeführt, nachdem wir diese Codedatei ausgeführt haben.

Beispiel 04: virtuelle Funktionen

Wenn wir eine Basisklassenreferenz „Zeiger“ verwenden, um auf ein Ableitungsklassenobjekt zu verweisen, können wir möglicherweise nicht einmal Methoden in C umgehen können++. Unter diesen Umständen stellt die Verwendung virtueller Methoden in der übergeordneten Klasse sicher, dass die Methode überschrieben werden kann. Wir haben also eine Elternklasse A mit seiner Kinderklasse B erstellt. Beide Klassen haben die gleichen Namensfunktionen, aber die übergeordnete Klassenfunktion enthält das Schlüsselwort „Virtual.In main () wurde das B -Klasse -Objekt "B" als Verweis auf das Zeigerobjekt "A" A "A" A verwendet.”

#enthalten
Verwenden von Namespace STD;
Klasse a
öffentlich:
virtuelle void show ()
Cout << "Base class A… " << endl;

;
Klasse B: public a
öffentlich:
void show ()
Cout << "Derived class B… " Rückkehr 0;

Bei der Ausführung dieses Code wurde die abgeleitete Klassenmethode mithilfe des virtuellen Schlüsselworts in der übergeordneten Klasse benutzerdefinierten gleichnamens Funktion ausgeführt.

$ G ++ Polymorphismus.CC
$ ./A.Outg

Abschluss:

Hier ging es darum, den Polymorphismus in C ++ unter Verwendung einiger seiner Grundkonzepte zu verwenden. Um es reibungslos zu machen, haben wir Funktion Überladen, Funktionsüberschreiben, Operatorüberladung und virtuelle Funktionskonzept behandelt. Wir hoffen auf das beste Feedback für diese Arbeit.