Arv repetition - PowerPoint PPT Presentation

arv repetition n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Arv repetition PowerPoint Presentation
Download Presentation
Arv repetition

play fullscreen
1 / 9
Arv repetition
101 Views
Download Presentation
xenia
Download Presentation

Arv repetition

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  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 • Satserna i den aktuella klassens destruktor exekveras • Destruktorerna för den aktuella klassens datamedlemmar anropas • 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{};