You are on page 1of 16

Razvoj softvera

vebe 4
Lista

Lista dinamika struktura podataka


koja omoguava da se vie
elemenata vee u sekvencu ija
duina nije unaperd poznata.

vaka lista je!

ili prazna lista"

ili se sastoji od jedne vrednosti elementa


#tj. prvog elementa liste$ i liste koja
predstavlja njen nastavak.
%lement liste
class ElementListe
{
public:
int Vrednost;
ElementListe* Sledeci;
}
class Lista
{
private:
ElementListe* _Pocetak;
}
&ivot objekta
'. alokacija memorije
(. inicijalizacija
). upotreba
4. deinicijalizacija
*. osloba+anje memorije

konstruktor obezbe+uje
inicijalizaciju objekta pri pravljenju

destruktor obezbe+uje
deinicijalizaciju objekta pri
uklanjanju
,zrazi new i delete

operator new - alocira memoriju za


nove objekte

operator delete osloba+a


memoriju pri uklanjanju objekata

izraz new alocira memoriju i


inicijalizuje novi objekat #izvrava
operator new pa zatim konstruktor$

izraz delete deinicijalizuje objekat i


osloba+a memoriju #izvrava
destruktor. pa operator delete$
/estruktor

/estruktor metod koji obezbe+uje


neop0odnu deinicijalizaciju objekata pre
nego to se oni trajno uklone iz memorije.

vaka klasa ima tano jedan destruktor


#podrazumevani ili eksplicitno definisan$.

1odrazumevani destruktor se ponaa


inverzno podrazumevanom konstruktoru!
obezbe+uje da svi podaci objekta budu
deinicijalizovani primenom destruktora za
odgovarajue tipove.

~me!lase"#

nema rezultat ni argumente


/estruktor

2 telu se navode deinicijalizacije koje


ne obavlja podrazumevani destruktor.

2 destruktoru je potrebno osloboditi


alocirane resurse. tj. podatke tipova koji
ne osloba+aju sami resurse na koje
referiu.

1okazivai

3ko objekat klase referie na resurse


koji bi nakon unitavanja objekta mogli
ostati rezervisani i nedostupni. onda je
takve resurse neop0odno osloba+ati u
destruktoru klase.
4rste objekata

tatiki objekti prave se tokom


uitavanja programa u memoriju. pre
pozivanja funkcije main.a unitavaju pri
izlasku iz funkcije main

3utomatski objekti #lokalno definisani$


prave se kada se pri izvravanju koda
do+e do definicije promenljive koja
predstavlja novi objekat. 2nitavaju se
neposredno pre izlaska iz bloka u kome su
definisani.

/inamiki objekti eksplicitno se prave i


uklanjaju primenom izraza new i delete
int a"$#;
main"#
{
%
int b"&#;
int* c'new int"(#;
%
delete c;
}
5opiranje objekata
Lista l;
)or"int i'*; i+$*; i,,#
l-doda./aPocetak"i#;
%
Lista l$'l;

0ta se de1ava2
5opiranje objekta

5onstruktor kopije ili kopi-konstruktor


konstruktor iji je argument objekat
istog tipa
Lista l$'l;
Lista l$"l#;

1odrazumevani konstruktor kopije


primenjuje konstruktore kopije za sve
pojedinane lanove
5opiranje objekata

1litko kopiranje kopiraju se reference #ili


pokazivai$ na neke resurse. ali ne i sami
resursi.

/uboko kopiranje kopiraju se itavi resursi.

Resurse je potrebno duboko kopirati ako i


samo ako i0 destruktor osloba+a.

1roblemi

resurs se osloba+a u destruktoru. a


kopiranje je plitko -6 viestruko
osloba+anje resursa

resurs se ne osloba+a. a kopiranje je


duboko -6 curenje memorije

Lista"const Lista3 l#
7perator dodeljivanja
Lista l$' l;
%
l$'l;

,mplicitno definisan operator ' izvodi


plitko kopiranje.

void operator"const Lista3 l#

3ko je za ispravno funkcionisanje klase


neop0odan neki od metoda! destruktor.
konstruktor kopije ili operator
dodeljivanja. tada su neop0odna sva tri
metoda.

8abrana upotrebe kopi-konstruktora i


operatora dodeljivanja!
class Lista
{
%
private:
Lista"const Lista3 l#;
Lista3 operator' "const
Lista3 l#;
}

9etod moe biti deklarisan. a da ne bude i


definisan. :reka se prijavljuje samo ako
se koristi.
operator ;<

int operator 45 "unsi6ned i# const

int3 operator 45 "unsi6ned i#


=abloni

abloni me0anizam za opisivanje


algoritama koji se mogu primeniti na
vie tipova
template+class 78
7 ma9"7 9: 7 ;#
{ return 98; 2 9:;; }
%ma9+int8"a:b#%

abloni klasa i funkcija omoguavaju


parametarski polimorfizam

You might also like