• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak właściwie działają destruktory

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
750 wizyt
pytanie zadane 5 kwietnia 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)
Zadałem takie dziwne pytanie gdyż spodziewałem się że po użyciu destruktora nie będę mógł już używać obiektu, a tu klapa i nadal program może używać związanymi z nim funkcjami i zmiennymi.

4 odpowiedzi

+3 głosów
odpowiedź 5 kwietnia 2016 przez Dash Nałogowiec (29,650 p.)
Destruktor to funkcja wywoływana automatycznie podczas niszczenia obiektu. Pozwala ona np. usunąć wskaźniki wskazujące na obiekt który aktualnie niszczysz, albo je przekierować żeby uniknąć błędów pamięci itp. Z goła, samemu jej nie wywołujesz. Jest takim zaworem bezpieczeństwa w którym możesz przekazać dodatkowe wytyczne dotyczące niszczenia obiektu. I to tyle, nie wywołujesz go. Tylko piszesz i zostawiasz w spokoju, żeby odwalał swoją czarną robotę.
2
komentarz 5 kwietnia 2016 przez draghan VIP (106,230 p.)
Dopowiedziałbym, że destruktor to jest nic innego, jak zwykła metoda, która nie jest przeznaczona do użytkowania przez programistę.

Nie ma tam żadnej magii. Destruktor nie niszczy obiektu, jedynie jest automatycznie wywoływany przed jego zniszczeniem i wykonuje tylko to, co programista ustali, że jest do wykonania - i właśnie to automatyczne wywołanie stanowi jego siłę. +1
+1 głos
odpowiedź 5 kwietnia 2016 przez mikePQ Obywatel (1,340 p.)
Destruktor wykonywany jest przed usunięciem obiektu i jego zadaniem jest "posprzątanie" po obiekcie np. zamknięcie połączenia z plikiem, czy usunięcie elementów podległych
+1 głos
odpowiedź 5 kwietnia 2016 przez event15 Szeryf (93,790 p.)
A może pokaż jak to robisz.
+1 głos
odpowiedź 5 kwietnia 2016 przez niezalogowany

Destruktor jest natomiast funkcją, którą wykonuje się w celu zwolnienia pamięci przydzielonej dodatkowym obiektom lub innych zasobów.

Najczęstszą funkcją destruktora jest zwolnienie pamięci (zwykle poprzez zniszczenie wszystkich pól używanych przez ten obiekt).

Destruktor ma za zadanie wykonać czynności składające się na jego "zniszczenie", inne niż zwolnienie pamięci zajmowanej przez sam obiekt, a przygotowujące obiekt do fizycznego usunięcia. Po jego wykonaniu obiekt znajduje się w stanie osobliwym i zazwyczaj nie można już z tym obiektem zrobić nic poza fizycznym usunięciem. Destruktor zwykle wykonuje takie czynności, jak zamknięcie połączenia z plikiem/gniazdem/potokiem, wyrejestrowanie się z innych obiektów, czasem również zanotowanie faktu usunięcia, a także usunięcie obiektów podległych, które obiekt utworzył lub zostały mu przydzielone jako podległe (jeśli jest ich jedynym właścicielem), lub wyrejestrowanie się z ich użytkowania (jeśli są to obiekty przezeń współdzielone). 

Podobne pytania

0 głosów
1 odpowiedź 509 wizyt
0 głosów
2 odpowiedzi 371 wizyt
pytanie zadane 3 kwietnia 2018 w C i C++ przez pewien_programista Obywatel (1,070 p.)

93,188 zapytań

142,204 odpowiedzi

322,027 komentarzy

62,515 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2581p. - dia-Chann
  2. 2537p. - Łukasz Piwowar
  3. 2528p. - Łukasz Eckert
  4. 2514p. - CC PL
  5. 2476p. - Tomasz Bielak
  6. 2445p. - Łukasz Siedlecki
  7. 2443p. - rucin93
  8. 2418p. - Michal Drewniak
  9. 2373p. - Marcin Putra
  10. 2367p. - Adrian Wieprzkowicz
  11. 2317p. - Mikbac
  12. 2156p. - Anonim 3619784
  13. 2016p. - Michał Telesz
  14. 1733p. - rafalszastok
  15. 1628p. - Dominik Łempicki (kapitan)
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...