C++-Vererbung

C Inheritance



Vererbung ist ein sehr wichtiges Merkmal der objektorientierten Programmierung. Es ermöglicht dem Programmierer, eine Klasse von einer vorhandenen Klasse abzuleiten. Dies ist besonders in einem großen komplexen Projekt sehr nützlich, da es dem Programmierer ermöglicht, den Code wiederzuverwenden.

In diesem Artikel werden wir das Vererbungskonzept in der C++-Programmierung diskutieren. Wir werden das Konzept der Friend-Funktion in C++ anhand von Arbeitsbeispielen erklären.







Warum Erbschaft?

Die Vererbung ermöglicht das Erstellen einer neuen Klasse oder abgeleiteten Klasse von einer anderen Klasse oder Basisklasse. Die abgeleitete Klasse oder die untergeordnete Klasse verfügt über alle Funktionen der übergeordneten Klasse oder Basisklasse. Wir können den Code mit Hilfe der Vererbung wiederverwenden.



Art der Vererbung

Es gibt verschiedene Arten der Vererbung:



  1. Einfache/einfache Vererbung
  2. Hierarchische Vererbung
  3. Mehrstufige Vererbung
  4. Mehrfachvererbung

In diesem Artikel betrachten wir nur die einfache/einfache Vererbung.





Beispiel 1:

Schauen wir uns nun ein Beispielprogramm an, um das Konzept der Vererbung in C++ zu verstehen. Wir haben eine Basisklasse definiert und daraus eine weitere Klasse abgeleitet. Daher verfügt die abgeleitete Klasse über die Features (Member und Funktionen) der Basisklasse.

#enthalten

mit namespace std;

Klasse Base_Class
{
öffentlich:
intich;
LeereAnzeige()
{
Kosten<< 'Anzeige der Basisklasse' <<ich<<endl;
}

};

Klasse Derived_Class:öffentliche Base_Class
{
öffentlich:
Leerezeigen()
{
Kosten<< 'Anzeige der abgeleiteten Klasse' <<endl;
}
};

inthauptsächlich()
{
Derived_Class dc;
dc.ich = 100;
dc.Anzeige();
dc.zeigen();

Rückkehr 0;
}



Beispiel 2:

Dies ist ein weiteres Beispiel für die Vererbung in C++. In diesem Beispiel sehen wir, wie die Konstruktoren aufgerufen werden, wenn ein abgeleitetes Klassenobjekt erstellt wird.

Wie Sie unten sehen können, haben wir zwei Basisklassenkonstruktoren und drei abgeleitete Klassenkonstruktoren definiert. Aus der folgenden Ausgabe können Sie deutlich erkennen, dass der Basisklassenkonstruktor zuerst aufgerufen wird, bevor der abgeleitete Klassenkonstruktor aufgerufen wird.

#enthalten
mit namespace std;

Klasse Base_Class
{
öffentlich:
Basis_Klasse()
{
Kosten<< 'Base_Class - Keine Parameter' <<endl;
}
Basis_Klasse(intx)
{
Kosten<< 'Base_Class - Parameter : ' <<x<<endl;
}
};

Klasse Derived_Class:öffentliche Base_Class
{
öffentlich:
Abgeleitete Klasse()
{
Kosten<< 'Derived_Class - Keine Parameter' <<endl;
}
Abgeleitete Klasse(intund)
{
Kosten<< 'Derived_Class - Parameter : ' <<und<<endl;
}
Abgeleitete Klasse(intx,intund):Basis_Klasse(x)
{
Kosten<< 'Param of Derived_Class : ' <<und<<endl;
}
};

inthauptsächlich()
{
Abgeleitete_Klasse d(7,19);
}

Beispiel 3:

In diesem Beispiel werden wir sehen, wie abgeleitete Klassenobjekte verwendet werden können.

Wie Sie sehen, sind zwei Klassen definiert: Rectangle_Class und Cube_Class. Die Rectangle_Class ist die Basisklasse, von der die abgeleitete Klasse, d. h. Cube_Class, abgeleitet wird. Daher erben wir die Features von Rectangle_Class an Cube_Class.

Außerdem können Sie feststellen, dass wir die Cube_Class mit der öffentlichen Zugriffskontrolle erben. Dies bedeutet, dass die abgeleitete Klasse auf alle nicht privaten Member der Basisklasse zugreifen kann.

Wir haben ein Objekt der abgeleiteten Klasse deklariert und rufen dann die Methoden der Basisklasse auf, d. h. setLength() und setBreadth().

#enthalten

mit namespace std;

Klasse Rectangle_Class
{
Privatgelände:
intLänge;
intBreite;
öffentlich:
Rechteck_Klasse();
Rechteck_Klasse(intdas,intB);
Rechteck_Klasse(Rechteck_Klasse&R);
intgetLänge()
{
RückkehrLänge;
}
intgetBreadth()
{
RückkehrBreite;
}
LeereSetLänge(intdas);
LeeresetBreite(intB);
intBereich();
};

Klasse Cube_Class:öffentliche Rectangle_Class
{
Privatgelände:
intHöhe;
öffentlich:
Cube_Klasse(inth)
{
Höhe=h;
}
intgetHeight()
{
RückkehrHöhe;
}
LeeresetHeight(inth)
{
Höhe=h;
}
intVolumen()
{
RückkehrgetLänge()*getBreadth()*Höhe;
}
};


Rechteck_Klasse::Rechteck_Klasse()
{
Länge=1;
Breite=1;
}
Rechteck_Klasse::Rechteck_Klasse(intdas,intB)
{
Länge=das;
Breite=B;
}
Rechteck_Klasse::Rechteck_Klasse(Rechteck_Klasse&R)
{
Länge=R.Länge;
Breite=R.Breite;
}
LeereRechteck_Klasse::SetLänge(intdas)
{
Länge=das;
}
LeereRechteck_Klasse::setBreite(intB)
{
Breite=B;
}
intRechteck_Klasse::Bereich()
{
RückkehrLänge*Breite;
}

inthauptsächlich()
{
Cube_Class c(8);
C.SetLänge(12);
C.setBreite(9);
Kosten<<'Volumen ist'<<C.Volumen()<<endl;
}

Abschluss:

In diesem Artikel habe ich das Konzept der Vererbung in . erklärt C++ . C++ unterstützt verschiedene Arten der Vererbung, einschließlich Mehrfachvererbung (d. h. das Vererben von Funktionen von mehreren Basisklassen oder Elternklassen). Der Einfachheit halber habe ich hier jedoch nur die einfache Vererbung betrachtet. Ich habe drei Arbeitsbeispiele gezeigt, um zu erklären, wie wir die Vererbung in der C++-Programmierung verwenden und den Code wiederverwenden können. Darüber hinaus ist dies eine sehr nützliche Funktion von C++.