Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avKjell Bergman
1
Arv repetition Arv = Är relation Tillgänglighet public, protected och private. Överklass ös Direkt härledd underklass dhu: Class dhu : public ös{} Indirekt härledd underklass idhu Class idhu: public dhu{} Här är ös en indirekt basklass till klassen idhu
2
Arv konstigheter Konstruktorer,destruktorer, vänfunktioner och tilldelningsoperatorn ärvs inte. Medlemmar med samma namn göms av underklassen även om de inte har samma antal eller typ på parametrar. Man kan inte öka tillgänglighetsnivå för en datamedlem via arv, man kan bara behålla eller minska tillgänglighetsnivån.
3
Konstruktor vid arv I konstruktorn för underklassen kan man anropa konstruktorn för överklassen Konstruktor underklass():konstruktor överklass() {} Finns inte anropet anropas default konstruktorn i stället. Basklassens konstruktor anropas Den egna klassens datamedlemmar inititeras. Satserna i underklassens konstruktor, dvs innanför {} teknen anropas.
4
Destruktor När ett objekt tas bort sker följande 1.Satserna i den aktuella klassens destruktor exekveras 2.Destruktorerna för den aktuella klassens datamedlemmar anropas 3.Destruktorn för ev. överklass anropas
5
Polymorfism (mångformighet) Överlagring (Arv) och generiska programenheter (Klasstemplates) ger statisk bindning Dynamisk bindning med arv och virtual. Säger man bara polymorfism brukar man mena dynamisk bindning. Alla medlemsfunktioner utom konstruktörer, new och delete kan vara virituella.
6
Virituell destruktor Används arv så ska en virituell destruktor användas i alla basklasser.
7
Undvik slicing Person owner(”kalle”); Bil b(owner); Fordon f = b; // SLICING!!! Fordon *f2 = &b; // OK
8
Abstrakt klass En abstrakt klass kan inte instansieras och innehåller minst en ren virituell funktion enligt nedan. Virtual resultattyp funk(parametrar)=0; Är alla funktioner i klassen rent virituella blir klassen en rent abstrakt klass. Användningsområdet för en rent abstrakta klass kan vara att beskriva interface (metoder som syns utåt).
9
Multipelt arv Class D:public B1, public B2, public B3{} Varje basklass ingår i sin helhet i subklasserna. Lös namkonflikter med :: operatorn En virituell basklass v ingår exakt en gång i ett objekt. Class C: public virtual V{};
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.