Vracanje objekta iz metode i izvrsavanje destruktora
16.04.2009. u 23:45 · pre 213 meseci
#1
Desava mi se jedna cudna situacija, ili je ja barem tako dozivljavam...
Naime, jedna metoda mi vraca objekat neke liste (od vec postojece, bira odredjene elemente).
Kroz debag, sve izgleda dobro. Dolazi se do 'return', regularno se pravi kopija liste (postoji copy konstruktor), i onda se poziva destruktor koji brise svu dinamicki dodeljenu memoriju u listi, a zatim se iz metode vraca prazna lista??
Kroz debag sam moga da primetim da se destruktor poziva jos jednom, odmah nakon povratka iz metode, sto je ok, ali zasto se poziva pre vracanja rezultata?
Naime, jedna metoda mi vraca objekat neke liste (od vec postojece, bira odredjene elemente).
Code:
Lista Klasa::filtriraj()
{
Lista lista;
for (Elm* e = prvi; e; e = e->sled)
{
//ovde neka provera
lista.dodaj(*(e->nesto));
}
return lista;
}
Lista Klasa::filtriraj()
{
Lista lista;
for (Elm* e = prvi; e; e = e->sled)
{
//ovde neka provera
lista.dodaj(*(e->nesto));
}
return lista;
}
Kroz debag, sve izgleda dobro. Dolazi se do 'return', regularno se pravi kopija liste (postoji copy konstruktor), i onda se poziva destruktor koji brise svu dinamicki dodeljenu memoriju u listi, a zatim se iz metode vraca prazna lista??
Kroz debag sam moga da primetim da se destruktor poziva jos jednom, odmah nakon povratka iz metode, sto je ok, ali zasto se poziva pre vracanja rezultata?