Forum » Programiranje » [C++] Vprašanje iz osnov (dedovanje, itd.)
[C++] Vprašanje iz osnov (dedovanje, itd.)
jerneju ::
Sub mySub;
Super& ref = mySub;
Kaj pravzaprav to pomeni? Sub je class, ki je dedovan iz classsa Super.
Super& ref = mySub;
Kaj pravzaprav to pomeni? Sub je class, ki je dedovan iz classsa Super.
rasta ::
Deklariraš referenco tipa Super na spremenljivko mySub.
S tem prevajalniku poveš, da je ref samo drugo ime za isti kos pomnilnika kot mySub, vendar pa naj ta kos pomnilnika obravnava kot drug tip. To pomeni, da zna uporabljati samo polja prvotnega razreda (če si strukturo predstavljaš, kot v vrsti po pomnilniških celicah naložene podatke, to pomeni, da naredi rez, kjer se naj struktura konča, prej).
S tem prevajalniku poveš, da je ref samo drugo ime za isti kos pomnilnika kot mySub, vendar pa naj ta kos pomnilnika obravnava kot drug tip. To pomeni, da zna uporabljati samo polja prvotnega razreda (če si strukturo predstavljaš, kot v vrsti po pomnilniških celicah naložene podatke, to pomeni, da naredi rez, kjer se naj struktura konča, prej).
kihc ::
Naredil si kazalec ptr tipa Super, ki kaže na naslov v pomnilniku, kjer je mySub (se pravi kaže na mySub).
x
jerneju ::
Ne razumem.
V čem je pravzaprav razlika med:
Super& ref = mySub; in Super* ptr = &mySub;
Prej pa še definiraš Sub mySub; , kjer je Sub class, ki je dedovan iz classsa Super.
Velja pa potem:
ref.Neki();
ptr->Neki();
Nekako ne zastopim razlike...
V čem je pravzaprav razlika med:
Super& ref = mySub; in Super* ptr = &mySub;
Prej pa še definiraš Sub mySub; , kjer je Sub class, ki je dedovan iz classsa Super.
Velja pa potem:
ref.Neki();
ptr->Neki();
Nekako ne zastopim razlike...
rasta ::
Kazalec je spremenljivka, ki zaseda prostor v pomnilniku - tja je skopiran naslov začetka strukture, na katero kazalec kaže.
Referenca pa je samo drugo ime za tisti kos pomnilnika.
Kam kazalec kaže lahko med tekom programa spremeniš (tako da skopiraš novo vrednost v pomnilnik, ki je dodeljen tej spremenljivki), referenci pa ne.
Referenca pa je samo drugo ime za tisti kos pomnilnika.
Kam kazalec kaže lahko med tekom programa spremeniš (tako da skopiraš novo vrednost v pomnilnik, ki je dodeljen tej spremenljivki), referenci pa ne.
fiction ::
Wikipedia vse razjasni.
Lahko bi cisto lepo shajal samo s kazalci (kot je to v C-ju). Ampak ker je tako programiranje lazje podvrzeno
napakam, namesto pointerja na nek objekt, ki ga potem derefenciras, lahko uporabljas kar reference.
S tem se delas da je ref sinonim za tisti objekt. Kako to potem compiler naprej pohandla zate ni vazno
(ni nujno da je ref dejansko isti kos pomnilnika - lahko je tudi samo neke vrste "kazalec" v pomnilniku, ki se vedno avtomatsko
derefencira ob uporabi).
Recimo klic po referenci je malo bolj logicen, kot pa ce moras vedno po vrednosti prenesti naslov necesa (&nekaj) in potem znotraj funkcije
paziti da uporabljas *nekaj.
Lahko bi cisto lepo shajal samo s kazalci (kot je to v C-ju). Ampak ker je tako programiranje lazje podvrzeno
napakam, namesto pointerja na nek objekt, ki ga potem derefenciras, lahko uporabljas kar reference.
S tem se delas da je ref sinonim za tisti objekt. Kako to potem compiler naprej pohandla zate ni vazno
(ni nujno da je ref dejansko isti kos pomnilnika - lahko je tudi samo neke vrste "kazalec" v pomnilniku, ki se vedno avtomatsko
derefencira ob uporabi).
Recimo klic po referenci je malo bolj logicen, kot pa ce moras vedno po vrednosti prenesti naslov necesa (&nekaj) in potem znotraj funkcije
paziti da uporabljas *nekaj.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C] struct in int[] (strani: 1 2 )Oddelek: Programiranje | 7295 (6368) | MrBrdo |
» | C# je mozna referenca do int izven funkcije (direkt v classu torej)Oddelek: Programiranje | 1602 (1416) | TopCat |
» | [C/C++] pointerji in referenceOddelek: Programiranje | 2010 (1834) | Matako |
» | Pomoč pri c++ razlagaOddelek: Programiranje | 2301 (2043) | Person |
» | c++: shranjevanja strukture(razreda) na disk v enem kosuOddelek: Programiranje | 1112 (1021) | rasta |