Een virtuele methode heeft geen directe uitvoering en zijn gedrag wordt bepaald door de methode met dezelfde handtekening die is op het laagste niveau van de erfenis geïnstantieerd object . Een destructor wordt automatisch opgeroepen wanneer het object wordt vernietigd . Een virtuele destructor in C + + wordt voornamelijk gebruikt om resource lekken te voorkomen door het uitvoeren van een reiniging van het object . De volgende stappen wordt uitgelegd hoe u virtuele destructors gebruiken in C + + . Instructies 1 Bepaal wanneer een virtuele destructor gebruiken . Een destructor voor een klas moet zijn virtuele Wanneer een object van een afgeleide klasse zal worden vernietigd met een beroep op de basisklasse destructor . De sloper moet virtuele zijn als je een pointer verwijderen van een object en het is mogelijk dat het wijst op een afgeleide klasse . Kopen van 2 leren een belangrijk verschil tussen een destructor en andere lid methoden . In beide gevallen wordt de werkwijze van de afgeleide klasse ingesteld wanneer het wordt uitgevoerd . Echter , is de basisklasse destructor vervolgens riep dat dit gebeurt niet met andere methoden 3 Beschouw het volgende voorbeeld van een virtuele destructor : . # Include klasse Base_class {public : Base_class ( ) { cout //virtual keyword is nodig herevirtual ~ Base_class ( ) { cout } ; klasse Derived_class : openbare Base_class {public : Derived_class ( ) { cout ~ Derived_class ( ) { cout } ; void main ( ) { Base_class * p = new Derived_class ( ) , delete p; } 4 Observeer het gebruik van de virtuele trefwoord in het voorbeeld in stap 3 . Als de destructor van de basisklasse niet werden aangegeven als virtuele , zou de destructor van de afgeleide klasse niet gecalled . 5 Implementeer minstens een leeg lichaam voor een virtuele destructor sinds een puur virtuele functie niet kan worden verklaard .
|