? Fordi C + + bruker et objektorientert programmering, eller OOP modell , som en del av sin utforming, må programmerere bli kjent med visse OOP begreper som klasser og objekter . Når en programmerer ønsker å utvikle en gjenstand for bruk i koden , må hun utforme objektets funksjonalitet i en " klasse ". En klasse definerer data og funksjoner som et objekt kan bruke. En bestemt type objekt funksjon, den virtuelle ødelegger , for bruken krever at en programmerer forstå hvilken rolle destructors i klasser , begrepet klasse arv , og bruk av virtuelle funksjoner i C + + programmering. Arv
styrke OOP ligger i begrepet arv . Når en programmerer ønsker å forlenge funksjonelt av et objekt, eller hvis Et formål har mye av den funksjonelt på et annet objekt med bare mindre forskjeller , kan programmereren utlede en klasse fra hverandre . Når en klasse stammer fra en annen klasse ( "base " class ), den har tilgang til variabler og funksjoner som er definert i første klasse. I dette eksempelet stammer klasse " ball" fra klasse "kule ", og utvider funksjonaliteten
klasse Sphere {
public: .
Int getRadius ( ) {
retur r ;
}
int r ;
}
klasse Ball : public Sphere {
public:
streng farge ;
}
virtuelle funksjoner
Siden en avledet klasse har tilgang til alle funksjonene i base klasse , det kan bruke dem som helst som om det var opptrer som base klassen . Imidlertid kan det utledes klassen i stedet endre en funksjon i base klassen som passer deres behov . Videre kan en base klasse tjene som en mal for avledet klasse . I dette tilfellet vil base klassen nevne funksjoner uten å definere hva de gjør, i stedet forlater den til avledet klasser. En funksjon i en base klasse som ikke gjør noe , istedenfor å forlate en avledet klasse for å gjennomføre det, kalles en " virtuell "-funksjon.
Destructors
Integral til å protestere design er gjennomføringen av " konstruktør " og " destructor " funksjoner . En konstruktør funksjon for en klasse definerer hvordan et objekt skapt fra klassen vil først starte seg selv (hva standard dataverdier den vil inneholde , for eksempel) . Destructor , derimot , bestemmer hva som skjer når et objekt slettes fra minnet ( hvordan informasjonen i den slettes, for eksempel) . Dette eksempelet kode viser hvordan en klasse først definerer konstruktør og destructor funksjoner
klasse Sphere {
Sphere (); . //Konstruktør
~ Sphere (); //destructor
}
Virtual destructors
grunn av hvordan klasser og destructors arbeid, når en avledet klasse er slettet fra minnet , både destructor av avledet klasse og destructor av base klassen må kalles . For å oppnå dette , programmerere skape virtuelle destructors i grunnklasser , som avledet klasser kan definere . Dette eksemplet viser en base klasse med en virtuell destructor og en avledet klasse med sin egen destructor
klasse Sphere {
Sphere (); .
Virtuelle ~ Sphere ( ) { }; //den "virtuelle " søkeord betegner en virtuell klasse
}
klasse Ball : public Sphere {
Ball ();
~ Ball ( ) : //slette en " ball" objektet vil kalle dette ødelegger og Sphere destructor