Destructor dla połączonej listy C ++

Destructor dla połączonej listy C ++
Połączona lista to sekwencyjna struktura danych z elementami nie zatrzymanymi w tej samej lokalizacji pamięci. Innymi słowy, lista połączona składa się z węzłów, z których wszystkie mają ramkę danych i link do innego węzła na liście. Połączoną listę można zadeklarować jako strukturę lub klasę w C++. Gdy jakikolwiek obiekt klasy i jej elementów jest wyeliminowany, destruki są zwykle wykorzystywane do realokacji przechowywania i wykonywania niektórych operacji. Destruktor jest wywoływany, gdy obiekt klasy osiągnie swój dostęp lub jest celowo odrzucony.

Destruktor nie ma parametrów i nic nie zwraca. Destruktor nigdy nie był nazywany wyraźnie. Destruktor będzie miał podobny tytuł jak klasa, ale ma przed nim Tild (~). Jeśli lista nie jest już wykorzystywana w całym programie, zostanie usunięta przy użyciu destruktora, ponieważ wówczas przestrzeń do przechowywania przez każdy węzeł może być dostarczany do systemu. Destruktor listy powiązanej może usunąć listę. Porozmawiajmy szczegółowo:

Domyślnie zdefiniowany destruktor

Jeśli powiązana lista nie ma zdefiniowanego przez użytkownika destruktora, kompilator określi destruktor jako członek linku. Nieplezyczna lista powiązana nie będzie zdewastowana przez domyślnie zdefiniowany destruktor. Nie można zniszczyć wyraźnie zdefiniowanej listy destruktor. Domyślnie określony destruktor jest wirtualny, a metoda reallokacji zwraca procedurę niezdefiniowaną, zakończoną lub izolowaną. Gdy kompilator lokalizuje domyślnie zdefiniowany destruktor, który nie jest usunięty, jest on domyślnie określony. Ciało tego domyślnie ogłoszonego destruktora jest puste.

#włączać
za pomocą przestrzeni nazw Std;
link struct

int d;
link* Dalej;
;
Klasa Linklist

prywatny:
link* pierwszy;
publiczny:
LinkList ()
First = null;
~ LinkList ();
void addval (int a);
void display ();
;
void LinkList :: addval (int a)

link* newLink = nowy link;
newLink-> d = a;
newLink-> next = first;
First = newLink;

void LinkList :: Display ()

Na początku programu dołączymy plik nagłówka . Wraz z tym wykorzystywana jest również standardowa przestrzeń nazw. Deklarujemy jednego członka listy o nazwie „Link”. Zmienna „D” do przechowywania zestawu danych jest inicjowana. Tworzymy wskaźnik dla następnej listy. Tutaj konstruujemy klasę nazywaną „LILLIST LINK”. Jest to lista linków. Jego wskaźnik do pierwszego linku jest ustawiony jako prywatny, a konstruktor jest ustawiony publicznie.

Konstruktor „LILLIST LINK” nie ma parametru. Podaliśmy „pierwszy” link do wartości „null”. Następnie użyliśmy Destructor '~ LinkList ()' '. W C ++ destruktor to metoda, która usuwa element. Nie ma parametrów wejściowych i typu wyjściowego. Będziemy dodawać elementy do listy linków. Więc stosujemy funkcję void addval (). Ta funkcja zawiera wymagany zestaw danych jako argument.

Używamy funkcji void display () do wyświetlania wszystkich linków. Tutaj tworzymy nowy link. Podajemy zestaw danych do nowego linku za pomocą operatora (->). Ten operator wskazuje na następny link. Pierwszy element pierwszej listy linków wskazuje na nowy link. Musimy wyświetlić określoną lista połączona za pomocą funkcji Display ().


link* prąd = pierwszy;
When (obecny != Null)

Cout<current = current-> następny;


LinkList :: ~ LinkList ()

link* prąd = pierwszy;
When (obecny != Null)

link* temp = prąd;
current = current-> następny;
Usuń temperaturę;


int main ()

Linklist L;
L.AddVal (11);
L.AddVal (22);
L.AddVal (33);
L.AddVal (44);
L.wyświetlacz();
Cout<powrót 0;

Oprócz tego ustawiamy wskaźnik „*bieżący” na pierwszy link. Stosujemy tutaj pętlę When. Destruktor jest stosowany na „lista linków”. Podobnie ponownie ustawiamy wskaźnik na pierwszy element łącza i przestajemy ostatni element linku za pomocą „While” pętli. Zainicjujemy nową zmienną „Temp”, aby przechowywać wskaźnik pierwszego linku. Operator (->) służy do pozyskania wskaźnika do nowego linku.

Stąd usuwamy zmienną „temp”. Korpora funkcji main () rozpoczyna się. Dane z tej powiązanej listy są przechowywane w zmiennej „L”. Teraz osobno wkładamy cztery losowe wartości do listy za pomocą L.funkcja addVal (). Zatrudniamy L.display () metoda wyświetlania całej listy połączonej. Przed wejściem do polecenia „Return O” dodajemy „Endl”. Po prostu drukuje wartości linkowanej listy w osobnych wierszach.

Użycie trywialnego destruktura

Trywialny destruktor nie jest adresowany bezpośrednio. Zostaną one automatycznie zadeklarowane lub wyraźnie zadeklarowane. Ten destruktor nie jest dynamiczny; Dlatego destruktor klasy macierzystej nie jest dynamiczny. Destruktury są trywialni we wszystkich podstawowych klasach abstrakcyjnych. Destruktory są trywialni dla niektórych niestatycznych obiektów danych lub tablic podklasy. Destruki są często odwracane odwrotnie, że konstruktory są. Elementy posiadające trywialne destruktury nie wymagałyby odrzucenia usunięcia; Raczej mogą być realokowane.

#włączać
za pomocą przestrzeni nazw Std;
podróż klasowa
publiczny:
Podróż()

Cout<< "Constructor Invoked for Travel class" <
~ Travel ()

Cout<< "Destructor Invoked for Travel class" <
;
samochód klasowy
publiczny:
Samochód()

Cout<< "Constructor Invoked for Car class" <
~ Samochód ()

Cout<< "Destructor Invoked for Car class" <
;
int Main (void)

Podróż T1;
Samochód C2;
powrót 0;

Przede wszystkim integrujemy plik nagłówka i standardową przestrzeń nazw. Ogłaszamy powiązaną listę jako „podróż” klasowy. Publicznie definiujemy konstruktor tej klasy. Wykorzystaliśmy polecenie „cout”, aby wydrukować tekst. Następnie buduje się również destruktor '~ podróż ()' klasy. Aby wyświetlić wiersz, ponownie wprowadzamy instrukcję „Cout”. Stworzyliśmy drugą klasę programu o nazwie „Samochód”.

W ten sam sposób definiujemy konstruktor i niszczyciel tej klasy. Funkcja main () jest wywoływana. Obiekt „t1” klasy „podróż” i obiekt „c2” klasy „samochodu” został utworzony w ramach funkcji Main (). Musimy wprowadzić polecenie „return 0”, aby zakończyć program.

Konstruktor obiektu zwanego „T1” jest natychmiast wywoływany przed skonstruowaniem obiektu w pierwszej części funkcji main (). Tak więc, ilekroć obiekt „C2” klasy „CAR” jest wykonany w drugim wierszu funkcji main (), kompilator domyślnie wywołuje konstruktor związany z obiektem „C2”.

Destruki są często wywoływane w przeciwnej sekwencji jako konstruktory. Po zakończeniu kontekstu funkcji main (. Następnie wywoływany jest destruktor związany z obiektem „T1”.

Wniosek

W tym artykule omówiliśmy destruktor dla powiązanych list w C++. Destruktury nigdy nie zostaną wyraźnie powołani. Destruktorzy nie mają oświadczenia zwrotnego. Możemy wdrożyć destruktora, aby ujawnić pamięć tuż przed usunięciem połączonej listy, gdy lista zawiera wskaźnik pamięci systemowej. Aby zminimalizować przepełnienia bufora, można to wykonać.