-
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
Następne wpisy z tego wątku
- 28.07.09 17:54 Tomasz Bywalec
- 28.07.09 20:11 P.K.D
- 29.07.09 11:37 Mateusz Loskot
- 29.07.09 11:37 Mariusz Kruk
- 29.07.09 11:53 Tomasz Kaczanowski
- 29.07.09 12:29 Tomasz Bywalec
- 29.07.09 12:53 Mateusz Loskot
- 29.07.09 12:54 Mateusz Loskot
- 02.08.09 12:09 Bronek Kozicki
Najnowsze wątki z tej grupy
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
Najnowsze wątki
- 2025-07-12 Warszawa => PC Hardware Expert / Specjalista PC <=
- 2025-07-12 Warszawa => Account Manager - Usługi rekrutacyjne <=
- 2025-07-12 Warszawa => Administrator IT <=
- 2025-07-12 Warszawa => IT Administrator <=
- 2025-07-12 Warszawa => Asystent/tka ds. Administracji <=
- 2025-07-12 Warszawa => Specjalista/stka ds. Organizacji <=
- 2025-07-12 Warszawa => MENA New Business Manager <=
- 2025-07-12 Gdynia => Controlling systems Consultant <=
- 2025-07-12 Warszawa => Developer Microsoft Dynamics 365 Finance & Operations (D36
- 2025-07-12 Warszawa => Programista Microsoft Dynamics 365 Finance & Operations (D
- 2025-07-12 Warszawa => Dyrektor IT <=
- 2025-07-12 Warszawa => IT Director <=
- 2025-07-12 Czy wypowiedź Kaczyńskiego o Braunie jest skarżalna? ["działa z OBCEJ inspiracji"]
- 2025-07-11 Rejestrator temperatur - termopara, siec
- 2025-07-11 DPD, przeniesienie numerów z a2mobile i z Orange