Omdat C + + maakt gebruik van een object - georiënteerd programmeren , of OOP model , als onderdeel van het ontwerp , moet programmeurs vertrouwd zijn met bepaalde OOP concepten zoals klassen en objecten geworden . Wanneer een programmeur wenst een voorwerp voor gebruik in code te ontwikkelen , moet ze functionaliteit van het object te ontwerpen in een "class . " Een klasse definieert de gegevens en functies die een object kan gebruiken . Een specifiek type object functie , de virtuele destructor , voor het gebruik ervan vereist dat een programmeur begrijpen van de rol van destructors in de klassen , het concept van de klasse overerving , en het gebruik van virtuele functies in C + + programmeren . Inheritance Een kracht van OOP ligt in het concept van overerving . Wanneer een programmeur wil het functioneel van een object uit te breiden , of als er een voorwerp deelt veel van de functioneel van een ander object met slechts kleine verschillen , de programmeur kan een klasse ontlenen aan een ander . Wanneer een klasse afgeleid van een andere klasse ( de "basis "-klasse ) , heeft zij toegang tot de variabelen en functies die gedefinieerd zijn in de eerste klasse. In dit voorbeeld , klasse " bal " is afgeleid van de klasse " sfeer " en breidt zijn functionaliteit klasse Sphere { openbare : . Int getRadius ( ) { return r ; } int r ; } klasse Bal : openbare Sphere { openbare : < br > touwtje kleur ; } virtuele functies Sinds een afgeleide klasse heeft toegang tot alle functies van de basisklasse , het kan ze gebruiken als elk moment alsof het als de basisklasse . Echter , zou de afgeleide klasse in plaats van een functie in de basisklasse te wijzigen om zijn behoeften. Bovendien kan een basisklasse dienen als een sjabloon voor afgeleide klasse . In dit geval zal de basisklasse functies te noemen , zonder te definiëren wat ze doen , in plaats daarvan laat dat aan afgeleide klassen . Een functie in een basisklasse dat niets , in plaats daarvan een afgeleide klasse om het te implementeren verlaten doet , is een functie " virtuele " genoemd . Destructors Integrale naar ontwerp bezwaar is de uitvoering van " constructeur " en " sloper " functies . Een constructorfunctie van een klasse bepaalt hoe een object gemaakt van de klasse zelf zal eerst initialiseren ( wat standaard gegevens waarden die zij zullen bevatten, bijvoorbeeld ) . De sloper , daarentegen , bepaalt wat er gebeurt wanneer een object wordt verwijderd uit het geheugen ( de manier waarop de informatie in het verwijderd wordt, bijvoorbeeld) . Dit voorbeeld code laat zien hoe een klasse definieert eerst constructor en destructor functies klasse Sphere { Sphere ( ) ; . //Bouwer ~ Sphere ( ) ; //destructor } Virtuele destructors Want hoe klassen en destructors werk , wanneer een afgeleide klasse wordt uit het geheugen verwijderd , zowel de destructor van de afgeleide klasse en de destructor van de basisklasse moet worden genoemd . Om dit te bereiken , programmeurs creëren virtuele destructors in base classes , die afgeleide klassen kunnen definiëren . Dit voorbeeld toont een basisklasse met een virtuele destructor en een afgeleide klasse met zijn eigen destructor klasse Sphere { Sphere ( ) op ; . Virtuele ~ Sphere ( ) { }; //de " virtuele " keyword geeft een virtuele klas } klasse Bal : openbare Sphere { Ball ( ) op ; ~ Bal ( ) : //verwijderen van een " bal " object zal dit destructor en de Sphere destructor bellen |