C++

C++ Overerving

C++ Overerving
Overerving is een zeer belangrijk kenmerk van objectgeoriënteerd programmeren. Hiermee kan de programmeur een klasse afleiden uit een bestaande klasse. Dit is erg handig, vooral in een groot complex project, omdat het de programmeur in staat stelt de code opnieuw te gebruiken.

In dit artikel gaan we het overervingsconcept in C++-programmering bespreken. We zullen het concept van de vriendfunctie in C++ uitleggen met werkende voorbeelden.

Waarom overerving??

Overerving maakt het mogelijk een nieuwe klasse of afgeleide klasse van een andere klasse of basisklasse te maken. De afgeleide klasse of de onderliggende klasse heeft alle kenmerken van de bovenliggende klasse of basisklasse. We kunnen de code hergebruiken met behulp van overerving.

Soort erfenis

Er zijn verschillende soorten overerving:

  1. Eenvoudige/enkele overerving
  2. Hiërarchische erfenis
  3. Overerving op meerdere niveaus
  4. Meerdere overerving

In dit artikel gaan we alleen eenvoudige/enkele overerving beschouwen.

Voorbeeld 1:

Laten we nu eens kijken naar een voorbeeldprogramma om het concept van overerving in C . te begrijpen++. We hebben een basisklasse gedefinieerd en er vervolgens een andere klasse van afgeleid. Daarom heeft de afgeleide klasse de kenmerken (leden en functies) van de basisklasse.

#include
namespace std; gebruiken;
klasse Basis_Klasse

openbaar:
int ik;
ongeldige weergave()

cout << "Display of Base Class " << i << endl;

;
class Derived_Class:public Base_Class

openbaar:
ongeldige toon()

cout << "Show of Derived Class" << endl;

;
int hoofd()

Derived_Class dc;
dc.ik = 100;
dc.Scherm();
dc.tonen();
retourneer 0;

Voorbeeld 2:

Dit is een ander voorbeeld van overerving in C++. In dit voorbeeld gaan we zien hoe de constructors worden aangeroepen wanneer een afgeleid klasseobject wordt gemaakt.

Zoals je hieronder kunt zien, hebben we twee basisklasse-constructors en drie afgeleide klassenconstructors gedefinieerd. U kunt aan de onderstaande uitvoer duidelijk zien dat de constructor van de basisklasse eerst wordt aangeroepen voordat de afgeleide klassenconstructor wordt aangeroepen.

#include
#include
namespace std; gebruiken;
klasse Basis_Klasse

openbaar:
Base_Class()

cout << "Base_Class - No Parameters" << endl;

Base_Class(int x)

cout << "Base_Class - Parameters : " << x << endl;

;
class Derived_Class:public Base_Class

openbaar:
Derived_Class()

cout << "Derived_Class - No Parameters" << endl;

Derived_Class(int y)

cout << "Derived_Class - Parameters : " << y << endl;

Derived_Class(int x,int y):Base_Class(x)

cout << "Param of Derived_Class : " << y << endl;

;
int hoofd()

Derived_Class d(7,19);

Voorbeeld 3:

In dit voorbeeld gaan we zien hoe afgeleide klasseobjecten kunnen worden gebruikt.

Zoals u kunt zien, zijn er twee klassen gedefinieerd: Rectangle_Class en Cube_Class. De Rectangle_Class is de basisklasse waarvan de afgeleide klasse, i.e., Cube_Class is afgeleid. Daarom erven we de functies van de Rectangle_Class naar Cube_Class.

U kunt ook opmerken dat we de Cube_Class erven met de openbare toegangscontrole. Dit betekent dat de afgeleide klasse toegang heeft tot alle niet-private leden van de basisklasse.

We hebben een object van de afgeleide klasse gedeclareerd en roepen vervolgens de methoden uit de basisklasse aan, i.e., setLength() en setBreadth().

#include
namespace std; gebruiken;
class Rectangle_Class

privaat:
int lengte;
int breedte;
openbaar:
Rectangle_Class();
Rectangle_Class(int l,int b);
Rectangle_Class(Rectangle_Class &r);
int getLength()

retour lengte;

int getBreadth()

terugkeer breedte;

void setLength(int l);
void setBreadth(int b);
int gebied();
;
class Cube_Class:public Rectangle_Class

privaat:
int hoogte;
openbaar:
Cube_Class(int h)

hoogte = uur;

int getHeight()

retour hoogte;

void setHoogte (int h)

hoogte = uur;

int-volume()

return getLength()*getBreadth()*height;

;
Rectangle_Class::Rectangle_Class()

lengte=1;
breedte=1;

Rectangle_Class::Rectangle_Class(int l,int b)

lengte = l;
breedte = b;

Rectangle_Class::Rectangle_Class(Rectangle_Class &r)

lengte=r.lengte;
breedte=r.breedte;

void Rectangle_Class::setLength(int l)

lengte = l;

void Rectangle_Class::setBreadth(int b)

breedte = b;

int Rectangle_Class::gebied()

retour lengte*breedte;

int hoofd()

Cube_Class c(8);
c.setLength(12);
c.setBreadth(9);
cout<<"Volume is "<

Conclusie:

In dit artikel heb ik het concept van overerving in C . uitgelegd++. De C++ ondersteunt verschillende soorten overerving, waaronder "meervoudige overerving" (i.e., het erven van functies van meerdere basisklassen of bovenliggende klassen). Om het echter eenvoudiger te maken, heb ik hier alleen een enkele overerving overwogen. Ik heb drie werkvoorbeelden laten zien om uit te leggen hoe we overerving kunnen gebruiken in C++-programmering en de code opnieuw kunnen gebruiken. Bovendien is dit een zeer handige functie van C++.

Strijd om Wesnoth Zelfstudie
The Battle for Wesnoth is een van de meest populaire open source strategiespellen die je op dit moment kunt spelen. Dit spel is niet alleen al heel la...
0 A.D. zelfstudie
Van de vele strategiespellen die er zijn, 0 A.D. slaagt erin om op te vallen als een uitgebreide titel en een zeer diep, tactisch spel ondanks dat het...
Unity3D-zelfstudie
Inleiding tot Unity 3D Unity 3D is een krachtige game-ontwikkelingsengine. Het is platformoverschrijdend, zodat je games voor mobiel, internet, deskto...