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)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ł structTworzymy 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.