? Eftersom C + + använder en objektorienterad programmering , eller OOP modell , som en del av dess konstruktion , måste programmerare bekanta med vissa OOP begrepp såsom klasser och objekt . När en programmerare vill utveckla ett föremål för användning i koden , måste hon designar objektets funktionalitet i en " klass . " En klass definierar de uppgifter och funktioner som ett objekt kan använda . En särskild typ av objekt funktionen , den virtuella destructor , för dess användning kräver att en programmerare förstå vilken roll destruktorer i klasser , begreppet klass arv , och användningen av virtuella funktioner i C + + programmering . Arv
En styrka OOP ligger i begreppet arv . När en programmerare önskar förlänga funktionellt av ett föremål , eller om ett objekt delar mycket av den funktionellt i ett annat objekt med endast smärre skillnader , kan programmeraren härleda en klass från en annan . När en klass härrör från en annan klass ( "bas " class ) , har tillgång till de definierade variabler och funktioner i första klass . I det här exemplet , härleder class " ball " från klassen " sfär " och utökar dess funktionalitet
klass Sphere {
allmänheten : .
Int getRadius ( ) {
retur R ,
}
int r ,
}
klassen Ball : offentlighet {
allmänheten :
sträng färg ,
}
virtuella funktioner
Eftersom en härledd klass har tillgång till alla funktioner i basklassen , den kan använda dem som helst som om den handlade som basklass . Däremot kan den härledda klassen modifiera istället en funktion i basklassen som passar dess behov . Dessutom kan en basklass tjäna som en mall för härledd klass . I detta fall kommer basklassnamnet funktioner utan att definiera vad de gör , istället lämnar det till härledda klasser . En funktion i en basklass som gör ingenting , i stället lämnar en härledd klass för att genomföra det , kallas en " virtuell " -funktion .
Integral
Destructors att invända design är genomförandet av " konstruktör " och " destructor " funktioner . En konstruktorfunktionen för en klass definierar hur ett objekt skapas från klassen först att initiera sig själv ( vilken standard datavärden den kommer att innehålla , till exempel ) . Den destructor , däremot , bestämmer vad som händer när ett objekt tas bort från minnet ( hur informationen i den raderas , till exempel ) . Detta exempel visas hur en klass först definierar konstruktören och funktioner destructor
klass Sphere {
Sphere ( ) , . //Konstruktör
~ Sphere ( ) , //destructor
} Addera Virtuella Destructors
grund av hur klasser och destruktorer arbete, när en härledd klass raderas från minnet , både destructor den härledda klass och destructor av basklass måste kallas . För att åstadkomma detta , programmerare skapa virtuella destruktorer i basklasser , som härledda klasser kan definiera . Detta exempel visar en basklass med en virtuell destructor och en härledd klass med egen destructor
klass Sphere {
Sphere ( ),.
Virtual ~ Sphere () { } , //det " virtuella " nyckelordet betecknar en virtuell klass
}
Ball
klass : public Sphere {
Ball ( ) ;
~ Ball ( ) : //tar bort en " boll " objektet kommer att kalla denna destructor och Sphere destruktorn