Gå til innhold

pointer to base class


Anbefalte innlegg

Heisan!

Lurer på en ting angående base klasser og dynamisk binding(tror ihvertfall det er det det heter).

Sett at jeg har:

 

class Base_class { /kode her*/ }

class Derived_class: public Base_class{ /*kode her*/ }

Nå kan jeg lage kode slik som:

Base_class* p;
p = new Derived_class;

Dette vet jeg er mulig men skjønner ikke hvorfor det går ann.

 

Når jeg lager en peker av typen Base_class kan hvorfor kan den settes til å peke på et Derived_class objekt, bare fordi Derived_class arver fra Base_class?

Settes det av nok plass til å holde det største objektet som har Base_class som base klasse når jeg lager et objekt av base klassen?( :thumbdown: nå gikk det i surr :hmm: )

 

Blir ikke det, det samme som å lage en peker av typen int og sette den til å peke på en double? (dropp den siste sammenligningen hvis den ble rotete :p ).

 

På forhånd takk!

 

PS: Skrik hvis dårlig forklart!

Lenke til kommentar
Videoannonse
Annonse

Dette er fordi at en peker kun inneholder en adresse, typen på pekeren er det kompilatoren som holder styr på. Hvis en peker til et objekt av en baseklasse egentlig peker på et objekt av en subklasse vil du bare få tilgang til baseklasse-delen, fordi at typen på pekeren indikerer at det er et baseklasse-objekt i andre enden. Dvs. at et objekt av klasse Derived_class vil bære i seg et objekt av typen Base_class, og pekeren vil peke på dette.

Endret av A_N_K
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...