eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming[c++]Prosta klasa, czemu nie wywołuje destruktorów?Re: [c++]Prosta klasa, czemu nie wywołuje destruktorów?
  • Data: 2009-07-28 17:52:03
    Temat: Re: [c++]Prosta klasa, czemu nie wywołuje destruktorów?
    Od: grg12 <g...@c...at> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    P.K.D pisze:
    > Tutaj ta klasa: http://paste.dprogramming.com/dpibqklz
    >
    > Chodzi o to, że gdy wywołuję server::clearList() to obiekty nie są
    > niszczone, chyba dlatego, że lista zawiera wskaźniki. Jak to zrobić i
    > czy da się zrobić tak, że destruktory będą wywoływane automatycznie?

    Dokładnie dlatego - masz listę wskaźników na obiekty a nie obiektów -
    wywoływany jest więc "destruktor" wskaźnika :)
    Możesz np. w metodzie clearList przelecieć po wszystkich elementach
    zmiennej "servers" i wywołać ich destruktory np. tak:

    for(std::list<server *>::iterator ii=servers.begin();ii!=servers.end();
    ii++)
    {
    delete (*ii);
    }

    servers.clear();

    Tyle że ciało tej funkcji prawdopodobnie trzeba będzie zdefiniować poza
    klasą - w tym miejscu gdzie jest teraz destruktor jeszcze nie jest
    zadeklarowany.

    I jeszcze jedno - "delete this" w destruktorze to kiepski pomysł (no
    chyba że się coś w specyfikacji języka zmieniło?). Normalnie wywołanie
    destruktora jest konsekwencja wywołania delete - destruktor to "ostatnia
    szansa na posprzątanie zanim system zwolni pamięć" (np. zwolnić pliki,
    usunąć podobiekty utworzone przez new). W twoim przypadku destruktor
    może być pusty - jeśli koniecznie chcesz coś tam mieć - wstaw "std::cout
    << "obiekt typu server o nazwie"<<name<<" właśnie popełnia
    seppuku"<<std::endl;
    Pozdrawiam
    GRG

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: