1 / 9

Arv repetition

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. Arv konstigheter.

xenia
Download Presentation

Arv repetition

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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{};

More Related