Video: Abstrakte Klassen und virtuelle Funktionen - C++ Tutorial 2024
Zoals intellectueel bevredigend is als factoring in C ++ is, introduceert het een eigen probleem. In een voorbeeld over bankrekeningklassen, met name het standaard -account. Denk even na over hoe u de verschillende lidfuncties gedefinieerd in Account kunt definiëren.
De meeste account -lidfuncties vormen geen probleem omdat beide accounttypen deze op dezelfde manier implementeren. Het implementeren van die algemene functies met Account :: intrekking () is echter anders.
De regels voor het opnemen van een spaarrekening verschillen van die voor het opnemen van een betaalrekening. U moet Besparingen:: terugtrekking () anders uitvoeren dan u doet Controleren:: intrekking () . Maar hoe moet u Account implementeren:: terugtrekking ()?
Laten we de bankdirecteur om hulp vragen. Het gesprek zou ongeveer als volgt kunnen verlopen:
"Wat zijn de regels voor het opnemen van een account uit een account? " je vraagt.
"Welk type account? Besparingen of controleren? "Komt het antwoord.
'Van een account', zegt u. "Gewoon een account. "
Blanco uiterlijk.
Het probleem is dat de vraag niet logisch is. Er bestaat niet zoiets als 'gewoon een account'. "Alle rekeningen (in dit voorbeeld) controleren rekeningen of spaarrekeningen. Het concept van een account is een abstract concept dat kenmerken van de twee concrete klassen gemeen heeft.
Het is onvolledig omdat het de kritische eigendomsonttrekking mist () . (Nadat u de details nader hebt beschreven, vindt u mogelijk andere eigenschappen die voor een eenvoudig account ontbreken.)
Een abstracte klasse is er een die alleen in subklassen bestaat. Een concrete klasse is een klasse die niet abstract is.