Kopiuj Listę Listów Listy Lista C ++

Kopiuj Listę Listów Listy Lista C ++
Konstruktor kopii jest jak konstruktor; Jest to funkcja używana do inicjowania wartości do obiektu za pomocą innego obiektu w tej samej klasie. Łatwiej jest go użyć w języku programowania C ++, gdy w klasie znajduje się kilka parametrów obiektów. W tym artykule użyje funkcji Copy Constructor na liście powiązanej.

Kiedy nazywamy konstruktorem kopii?

W języku programowania C ++ możemy wywołać funkcję kopiowania w następujących sytuacjach. Jest to wywoływane, gdy zwrócimy obiekt klasy według wartości. Zaleca się również użycie konstruktora kopii w stanie, gdy przekazujemy obiekt klasy przez wartość jako parametr, gdy tworzymy obiekt tworzony przez w zależności od innego obiektu należącego do tej samej klasy.

Rodzaje konstruktora kopii

Istnieją dwa rodzaje konstruktorów kopii.

Kopiuj konstruktor (domyślnie)

Jeśli użytkownik nie definiuje żadnego konstruktora kopii, w tym przypadku kompilator dostarcza konstruktor.

Konstruktor zdefiniowany przez użytkownika

Programista zawsze definiuje konstruktor zdefiniowany przez użytkownika.

Kiedy potrzebujemy konstruktora kopii?

Jeśli nasz konstruktor kopii nie jest zdefiniowany, wówczas kompilator C ++ tworzy konstruktor kopii, który jest domyślnym. Musimy zdefiniować nasz konstruktor, gdy obiekt używa wskaźników, dynamicznej alokacji pamięci lub innych zasobów.

Składnia

Name_of_class (const name_of_class & object_name)

// Ciało konstruktora

Po użyciu konstruktora kopii otrzymujemy dwie kopie. Jeden jest znany jako płytka kopia, a druga to głęboka kopia. Płytka kopia jest wytwarzana przez domyślny konstruktor kopii. Podczas gdy konstruktor głębokiej kopii przydziela pamięć automatycznie, kopiuje rzeczywistą wartość. Skopiowane i rzeczywiste wartości są przechowywane w różnych miejscach w pamięci. Mówi się, że podczas tworzenia konstruktora zdefiniowanego przez użytkownika wymaganą jest głęboka kopia.

Wdrożenie konstruktora kopii

Zaimplementowaliśmy kod w edytorze tekstu Ubuntu, a wynikową wartość jest uzyskiwana przez wykonanie na terminalu Linux.

Ten program będzie wykorzystywać koncepcję programowania zorientowaną na obiekt, ponieważ konstruktorzy są używane do tworzenia klas. Klasa jest tworzona z częścią prywatną o wartościach całkowitej. W części publicznej tworzono konstruktor o nazwie klasy. Ten konstruktor użyje dwóch wartości w parametrze, aby otrzymać wartość przekazaną z programu głównego. Wewnątrz konstruktora wysłane wartości są przypisywane do nowych zmiennych.

Po konstruktorze ponownie powstaje nowy konstruktor. Jest to skopiowany konstruktor. Jak opisaliśmy powyżej, ten konstruktor przyjmuje nazwę klasy, a obiekt utworzony.

Następnie użyliśmy dwóch funkcji, getx () i get (), które zwróci wartość zmiennych. W programie głównym konstruktory są wywoływane za pomocą nazwy klasy, każda (oryginalna), a konstruktor kopii zawiera argumenty w parametrze. Normalny konstruktor zawiera dwie wartości przekazywane do zmiennej. A konstruktor kopii jest przypisany do obiektu pierwszej klasy. Aby wyświetlić wynikową wartość, wywołamy funkcję GET za pomocą obiektów obu konstruktorów.

Zapiszymy kod i wykonamy go za pomocą kompilatora g++.

Po wykonaniu kodu źródłowego widać, że obie wartości są takie same, że konstruktorzy przekazali z oryginalnego lub przez konstruktora kopii.

Połączona koncepcja listy w C++

Połączona lista to struktura danych, która zawiera kilka węzłów podłączonych przez adresy przechowywane w każdym węźle.

węzeł struct

dane liczb całkowitych;
struct node *następny_part;
;

Tworzymy strukturę posiadającą część danych, która przechowuje w niej wartości i następną część, która przechowuje adres sąsiedniego węzła. Następnym krokiem, jaki robimy, jest zainicjowanie węzłów w programie głównym. Wszystkie węzły są zadeklarowane jako zerowe za pomocą wskazówek.

Każda część danych węzła jest przypisywana przez wartości. Odbywa się to poprzez dostęp do tej części węzła.

Jeden -> dane = 1;

Podobnie wszystkie węzły otrzymują swoje odpowiednie dane.

Najważniejszą rzeczą na listy połączonej jest połączenie między utworzonymi węzłami. Odbywa się to, gdy następna część jednego węzła jest przypisywana adresem drugiego węzła; Podobnie drugi węzeł zawiera adres trzeciego. I tak dalej, proces ten trwa do ostatniego węzła. Kolejna część ostatniego węzła jest zadeklarowana NULL, ponieważ nie ma tu dalszego węzła.

Konstruktor kopii i lista połączona w C++

Do korzystania z konstruktora kopii na połączonej liście użyliśmy struktury do utworzenia węzła. Po zamknięciu struktury używana jest tutaj klasa o nazwie Linked_List. Część prywatna będzie zawierać zmienne głowy typu wskaźnika i ogona. Normalny konstruktor przypisuje wartości do części głowy i ogona w części publicznej.

Dwie zmienne typu liczb całkowitych zaakceptują wartości, które zostaną wysłane z programu głównego, tworząc obiekt. Zmienne te są przypisane do zmiennych głowy i ogona do przechowywania w nich wartości. Po normalnym konstruktorze deklarowana jest konstruktor kopii. Będzie to o tej samej nazwie, a jego parametr będzie zawierał stałą nazwę klasy z obiektem. Ten konstruktor jest również przypisywany z tymi samymi wartościami. Ale są one dostępne z obiektami. Otrzymamy te wartości za pomocą funkcji get (). Obie wartości w zmiennej zostaną zwrócone.

Po konstruktorze zastosowano prostą funkcję dodawania węzła do istniejącego węzła. Tworzony jest nowy węzeł o nazwie temperatury. Część danych jest przypisywana wartością. A następna część jest zadeklarowana jako null. Tutaj sprawdzamy, czy dodany węzeł jest pierwszym lub linkowaną listą już zawiera węzeł. Tak więc używana jest instrukcja IF-Else. Sprawdzi, czy głowa jest równa NULL, wówczas głowę i ogon przydzielono wartość „TMP”. Ale w innym przypadku, jeśli nie są null, następna część ogona jest przypisana adresowi nowego węzła. Oznacza to, że „TMP” będzie zawierać adres ogona. A ogon zaktualizuje wartość.

Teraz w programie głównym utworzymy obiekt klasy; Tworząc obiekt, wywołują konstruktorzy. Oryginał i konstruktor kopii będą zawierać wartości parametrów. Konstruktor kopii tworzy obiekt i jest przypisany do obiektu oryginalnego konstruktora.

Te wartości zostaną wyświetlone. Aby zobaczyć wynikową wartość, wykonaj program na terminalu. Możesz zobaczyć, że oba konstruktor ma te same wartości.

Wniosek

W tym artykule wyjaśniono działanie i tworzenie konstruktora kopii na połączonej liście za pomocą C++. Odbywa się to poprzez wyjaśnienie konstruktora kopii, jego typów i użycia w prostym programie wykazanym w przykładzie. Ponadto wyjaśniono również koncepcję tworzenia listy powiązanych. Połączony przykład połączonej listy z konstruktorem kopii służy do wyczyszczenia każdej dwuznaczności użytkownika końcowego.