Wat is Overervingsconstructor in C++

Wat Is Overervingsconstructor In C



In C++, erfenis is een sleutelbegrip in objectgeoriënteerd programmeren. Een afgeleide klasse kan de eigenschappen en het gedrag van een basisklasse erven dankzij de krachtige erfenis mogelijkheden in C++. Een afgeleide klasse erft onmiddellijk alle leden van de basisklasse wanneer deze wordt gevormd. Het is noodzakelijk dat de afgeleide klassenconstructor ook de leden van de basisklasse initialiseert. In C++, erfenis is een krachtige functie waarmee ontwikkelaars code kunnen hergebruiken, de efficiëntie kunnen verbeteren en code in logische hiërarchieën kunnen ordenen.

Naast overerving zijn constructors ook essentieel in C++. A constructeur is een unieke lidfunctie waarmee u de eigenschappen van het object kunt initialiseren. Een Overerving constructeur is een constructor die wordt gebruikt om zowel de basisklasse als de afgeleide klasseobjecten te initialiseren die de afgeleide klasse heeft geërfd. De erfenis constructeur is verantwoordelijk voor het initialiseren van zowel de overgeërfde basisklasse-leden als de afgeleide klasse-leden. Om dit te bereiken, roept de constructor de constructor van de basisklasse aan en zorgt ervoor dat alle leden van de afgeleide klasse correct worden geïnitialiseerd, inclusief de leden die zijn geërfd van de basisklasse.

Door de constructor van de basisklasse aan te roepen en de benodigde parameters door te geven, wordt het erfenis constructeur initialiseert de leden van de basisklasse. Dit wordt gedaan met behulp van de 'basisklasse (args)' initialisatielijst in de constructor. Verdere instructies die specifiek zijn voor de afgeleide klasse zijn te vinden in de constructor-body.







De syntaxis voor erven een klasse in C++ is:



klas Afgeleide klasse : accessSpecifier BaseClass {
// klasgenoten
} ;

De nieuwe klasse die in dit geval wordt gevormd, 'Afgeleide klasse', zal erven van 'Basisklasse'. Het toegangsniveau tot de overgeërfde leden wordt gespecificeerd door de ' toegangsspecificatie'. C++ gebruikt drie soorten toegangsspecificaties, namelijk 'publiek privaat', En 'beschermd' . Het woord 'openbaar' geeft aan dat de afgeleide klasse toegang heeft tot de openbare leden van de basisklasse. De afgeleide klasse heeft geen toegang tot de leden van de basisklasse, aldus de 'privaat' specificatie. De afgeleide klasse heeft toegang tot de beschermde leden van de basisklasse die kunnen worden geërfd door hun onderliggende klassen, volgens de ‘beschermd’ specificatie.



Voorbeeld van overerving in C++

Het volgende voorbeeld toont de implementatie van Erfenis in C++:





#include
gebruik makend van naamruimte soa ;

klas Dier {
openbaar :
leegte eten ( ) {
cout << 'Ik kan eten!' << eindel ;
}
leegte slaap ( ) {
cout << 'Ik kan slapen!' << eindel ;
}
} ;
klas Kat : openbaar Dier {
openbaar :
leegte mauw ( ) {
cout << 'Ik kan miauwen!' << eindel ;
}
} ;
int voornaamst ( ) {
Kat kat1 ;
kat1. eten ( ) ;
kat1. slaap ( ) ;
kat1. mauw ( ) ;

opbrengst 0 ;
}

De gegeven code definieert twee klassen, 'Dier' En 'Kat' , waar 'Kat' is afgeleid van 'Dier' . Beide klassen hebben enkele lidfuncties, zoals 'eet slaap' , En 'mauw' . De hoofdfunctie maakt een object van de klasse 'Kat' en belt de geërfd functies uit de klas 'Dier' evenals de specifieke functie van de klasse 'Kat' , dat is 'mauw' . Het programma stuurt de tekst naar de console om aan te geven dat de kat kan eten, slapen en miauwen.

Uitgang



Wanneer een klasse wordt afgeleid, worden alle lidvariabelen en lidfuncties van de basisklasse overgebracht naar de afgeleide klasse. De geërfd De toegankelijkheid van leden in de afgeleide klasse wordt bepaald door de toegangsspecificatie. De afgeleide klasse kan ook nieuwe functies vervangen door reeds bestaande. Het kan nieuwe implementaties toevoegen voor de methoden van de basisklasse en nieuwe lidfuncties en variabelen toevoegen.

Het is cruciaal om te onthouden dat de erfenis constructeur moet worden gebruikt om de constructor van de basisklasse expliciet aan te roepen met de benodigde parameters als de basisklasse een standaardconstructor heeft of als deze niet beschikbaar is.

Conclusie

De sterke eigenschap van erfenis in C ++ kunnen klassen code hergebruiken door kenmerken en acties van andere te erven. Een handige functie van C ++ erfenis constructeur staat toe dat afgeleide klassen de eigenschappen, methoden en gegevensleden van een basisklasse erven. Met de toevoeging van een initialisatielijst voor constructors van basisklassen, wordt deze gedefinieerd met dezelfde syntaxis als een standaardconstructor. C++-programmeurs kunnen codeduplicatie minimaliseren en de codestructuur verbeteren door gebruik te maken van de erfenis constructeur . Voor het maken van complexe klassenhiërarchieën in objectgeoriënteerd programmeren is het een belangrijk hulpmiddel.