next up previous
Next: Uporaba operator-jev

Vaje 27

Klavdija Lunar

1.6.1998

Lastnosti razreda Cniz so:

Ogledali smo si tudi testni program, ki si ga lahko ogledaš na:

displaymath83

KAJ POMENI PRENOS PO REFERENCI? To pomeni, da pokličeš funkcijo in ji podaš original.

KAJ POMENI PRENOS PO VREDNOSTI? To pomeni, da pokličeš funkcijo in ji podaš kopijo originala. Pri prenosu po vrednosti se požene prepisovalni kreator (copy-creator), ki original ,,prekopira`` v kopijo.

KAKO KOPIRAMO? Original:

tabular24

tabular29

skopiramo oz. naredimo prenos po vrednosti v:

tabular24

mDolzina je število znakov v nizu, mSkladisce pa je kazalec na polje znakov. Oba se prepišeta takšna, kot sta. Ko sedaj poženemo ,,destruktor`` na kopiji, le-ta uniči tudi niz ABC, pa čeprav je še vedno del originala - in ga zato ne bi smel uničiti.

Rešitev je, da kopiranje ne prepiše samo mDolzina in mSkladisce, ampak tudi niz ABC. To dosežemo z uporabo zgoraj omenjenega prepisovalnega kreatorja. V definicijski modul dodamo:

  CNiz(CNiz & original);
/* DESC:   Prepise original v niz this v celoti -- vkljucno z nizom
           (vsebino skladisca), na katerega kaze mSkladisce.
   PARMS:  nekaj -- prepisani element (po referenci).
   RESULT: /
   PRE:
   POST:   (mDolzina = nekaj.mDolzina) AND
           (*mSkladisce = *staro.mSkladisce)
*/
Podrobnosti so v:

displaymath84





Andrej Brodnik (Andy)
Mon Jun 15 16:50:31 MET DST 1998