• 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

Object Storage Arubacloud
0 głosów
554 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ź 455 wizyt
0 głosów
2 odpowiedzi 334 wizyt
pytanie zadane 3 kwietnia 2018 w C i C++ przez pewien_programista Obywatel (1,070 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...