Arbeiten mit Vererbung in C++

In diesem Tutorial werden wir darüber sprechen Vererbung in C ++, ein sehr interessantes Thema, sehen wir es uns an einem einfachen Beispiel an. Für Benutzer von Windows können Sie eine IDE zum Programmieren herunterladen. Sie hilft Ihnen beim Kompilieren und Ausführen der Programme. Wir hinterlassen den folgenden Link:

DEVC ++

Hier verwenden wir Linux, insbesondere Ubuntu, das bereits einen Compiler für C++ hat. Die Sprache C++ erlaubt, wie jeder wahrscheinlich weiß, Mehrfachvererbung, im Gegensatz zu Java, das nur einfache Vererbung erlaubt und wenn wir etwas Ähnliches wollen, müssen wir Schnittstellen ziehen, am Ende ist es weniger fehleranfällig.

Das Hauptbeispiel, das wir hier zeigen werden, um die Vererbung in C ++ zu sehen, ist einfach, wir werden nicht auf die Mehrfachvererbung eingehen, außer am Ende, um einen Fehler zu zeigen, von dem wir betroffen sein können.

1. Einfache Vererbung in C++


Um das erste Beispiel, einfache Vererbung, zu beginnen, haben wir eine Klasse Tier, die unsere Basisklasse oder unser Elternteil sein wird, und 2 Klassen, die erben werden, Hund die keinen Code haben und Katze wodurch der übergeordneten Klasse ein neuer Parameter hinzugefügt wird. Sehen wir uns den Code an (er ist kurz):
 #include mit namespace std; Klasse Tier {privat: int alter; öffentlich: Tier (int a = 1) {Alter = a; }; int getAge () const {Rückkehralter;} void setAge (int a = 9) {age = a; }}; Klasse Hund: öffentliches Tier {}; Klasse Katze: öffentlich Tier {privat: Schwimmgewicht; öffentlich: Katze (int a = 2, float w = 3.2): Tier (a) {Gewicht = w; } float getWeight () const {Gewicht zurückgeben;}}; int main () {Hundemastin; cout << "____DOG____" << endl; cout << "Vorher:" << mastin.getAge () << endl; mastin.setAge (2); cout << "Nach:" << mastin.getAge () << endl; Katzenmiauen (3, 4.1); cout << "____CAT____" << endl; cout << meow.getAge () << "" << meow.getWeight () << endl; } 
Wir gehen davon aus, dass Sie bereits einige C++-Kenntnisse haben, um Vererbungsprobleme zu sehen, und daher werden die Teile von Funktionen oder öffentlichen und privaten Teilen nicht erklärt. Um von einer Klasse zu erben, haben wir die folgende Syntax:
 Klasse Tochter_Klasse: öffentliche Eltern_Klasse
Also in unserem Beispiel, um die Klasse zu erstellen Hund Wir haben benutzt:
 Klasse Hund: öffentliches Tier
Zeigt an, dass Hund erbt von Animal, alles, was die Animal-Klasse in ihren öffentlichen oder geschützten Blöcken hat, können wir verwenden, aber wenn wir den privaten Block verwenden, erhalten wir einen Fehler. Gute Klasse Hund es ist leer, also hat es keine größeren Schwierigkeiten.

Wenn wir zum Unterricht gehen Katze, wir haben die gleiche Klassendeklaration wie zuvor, abgesehen davon, dass sie eine neue Variable hinzufügt Gewicht, diese Variable hat weder sie noch die Klasse Tier, weder Hund. Hier im Konstruktor der Klasse haben wir den Konstruktor der Elternklasse aufgerufen, also übergeben wir die Daten für die Variable Alter, und wir füllen auch die Variable Gewicht.

NotizSie können sehen, dass die Parameter, die wir an die Funktionen übergeben, einen Standardwert haben können.

Im hauptsächlich wir erstellen ein Objekt der Klasse Hund, wir belassen das Alter standardmäßig und zeigen es an, dann verwenden wir die Funktion setAge um das Alter zu ändern und erneut anzuzeigen. Schließlich erstellen wir ein Objekt der Klasse Katze, und diesmal lassen wir die Variablen keinen Standardwert haben und übergeben sie ihnen beim Erstellen des Objekts, und um sie nicht zu variieren, zeigen wir sie an.

Wenn wir wollen Führen Sie diesen Code in einem Linux-Terminal mit g ++ aus, wir machen folgendes:

 g ++ -o teste tesc.gcc
Und um es ganz einfach auszuführen:
 ./Prüfung
Wir zeigen ein Capture mit der Kompilierung und Ausführung des kleinen Codes:

2. Mehrfachvererbung in C++


Sie zu sehen Gefahren der Mehrfachvererbung Wir werden einen sehr kleinen Code hinterlassen:
 #include mit namespace std; Klasse Animal {public: void walk() {cout << "Walking in Animal" << endl; }}; Klasse Säugetier {öffentlich: void walk () {cout << "Walking in Mammal" << endl; }}; Klasse Hund: öffentliches Tier, öffentliches Säugetier {}; int main () {Hund Hund; Gassigehen (); } 
Wir sehen das Hund erbt von Tier Ja Säugetier, und beide Klassen haben die gleiche Funktion gehen, wenn ich die normale Funktion wie im Code verwende:
 Gassigehen ()
Und wir kompilieren, wir erhalten den folgenden Fehler:

Um es zu lösen, können wir die folgende Syntax verwenden, um die Funktion aufzurufen Tier:

 Hund.Tier :: Spaziergang ();
oder um die Klasse zu benutzen Säugetier:
 Hund.Mamifero :: Spaziergang ();
Und natürlich ist die beste Lösung, nicht 2 Funktionen mit demselben Namen zu haben, wenn wir die Mehrfachvererbung verwenden wollen, in diesem Programm ist es sehr einfach, es zu lösen, aber in einem großen kann es zu Kopfschmerzen werden.

Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave