Sammen med arv er konstruktører også essensielle i C++. EN Konstruktør er en unik medlemsfunksjon som lar deg initialisere objektets egenskaper. An Arvkonstruktør er en konstruktør som brukes til å initialisere både baseklassen og avledede klasseobjekter som den avledede klassen har arvet. De Arvkonstruktør er ansvarlig for å initialisere både de arvede baseklassemedlemmene og de avledede klassemedlemmene. For å oppnå dette påkaller konstruktøren konstruktøren av baseklassen, og sørger for at alle medlemmer av den avledede klassen er riktig initialisert, inkludert de som er arvet fra baseklassen.
Ved å påkalle baseklassens konstruktør og gi den nødvendige parametere, Arvkonstruktør initialiserer medlemmene i baseklassen. Dette oppnås ved hjelp av 'baseklasse (args)' Initialiseringsliste i konstruktøren. Ytterligere instruksjoner som er spesielle for den avledede klassen, er gitt i konstruktørorganet.
Syntaks for arver En klasse i C ++ er:
Klasse avledet Class: AccessSpecifier BaseClass
// Klassemedlemmer
;
Den nye klassen som dannes i dette tilfellet, “DEDEDCLASS”, vil arve fra “BaseClass”. Tilgangsnivået til de arvelige medlemmene er spesifisert av "AccessSpecifier ”. C ++ bruker tre typer tilgangspesifikasjoner, nemlig "offentlig privat", og “Beskyttet”. Ordet "offentlig" indikerer at den avledede klassen har tilgang til baseklassens offentlige medlemmer. Den avledede klassen har ingen tilgang til medlemmene i baseklassen, ifølge 'privat' Spesifikasjon. Den avledede klassen har tilgang til de beskyttede baseklassemedlemmene som kan arves av deres barneklasser, ifølge 'beskyttet' Spesifikasjon.
Eksempel på arv i C++
Følgende eksempel viser implementering av Arv I C ++:
#inkludere
ved hjelp av navneområdet STD;
Klassedyr
offentlig:
tomrom spis ()
cout << "I can eat!" << endl;
ugyldig søvn ()
cout << "I can sleep!" << endl;
;
Klassekat: offentlig dyr
offentlig:
void meow ()
cout << "I can meow!" << endl;
;
int main ()
Cat Cat1;
Cat1.spise();
Cat1.sove();
Cat1.mjau();
retur 0;
Den gitte koden definerer to klasser, "Dyr" og "Katt", hvor "Katt" er avledet fra "Dyr". Begge klasser har noen medlemsfunksjoner, for eksempel "Spis sov", og "mjau". Hovedfunksjonen skaper et objekt i klassen "Katt" og kaller arvet funksjoner fra klassen "Dyr" så vel som den spesifikke funksjonen til klassen "Katt", som er "mjau". Programmet gir teksten til konsollen, noe som indikerer at katten kan spise, sove og meow.
Produksjon
Når en klasse er avledet, blir alle baseklassens medlemsvariabler og medlemsfunksjoner overført til den avledede klassen. De arvet Medlemmenes tilgjengelighet i den avledede klassen bestemmes av tilgangspesifikatoren. Den avledede klassen kan også erstatte nye funksjoner for de som allerede eksisterer. Det kan legge til nye implementeringer for baseklassens metoder og legge til nye medlemsfunksjoner og variabler.
Det er avgjørende å huske at Arvkonstruktør Må brukes til å eksplisitt kalle baseklassens konstruktør med de nødvendige parametrene hvis baseklassen har en standardkonstruktør, eller hvis den ikke er tilgjengelig.
Konklusjon
Det sterke trekk ved arv I C ++ lar klasser gjenbruke kode ved å arve egenskaper og handlinger fra andre. Et nyttig trekk ved C ++ 's Arvkonstruktør lar avledede klasser arve egenskapene, metodene og datamedlemmer i en baseklasse. Med tillegg av en initialiseringsliste for baseklassekonstruktører, er den definert ved å bruke samme syntaks som en standardkonstruktør. C ++ -programmerere kan minimere kodeduplisering og forbedre kodestrukturen ved å bruke Arvkonstruktør. For å lage komplekse klassehierarkier i objektorientert programmering, er det et viktig verktøy.