Kopier konstruktørkoblet liste C ++

Kopier konstruktørkoblet liste C ++
En kopikonstruktør er akkurat som en konstruktør; Det er en funksjon som brukes til å initialisere en verdi til et objekt ved hjelp av et annet objekt i samme klasse. Det er lettere å bruke på programmeringsspråket C ++ når det er flere objektparametere i klassen. Denne artikkelen vil bruke Copy Constructor -funksjonen i den koblede listen.

Når kaller vi en kopikonstruktør?

På programmeringsspråket C ++ kan vi kalle en kopi -funksjon i følgende situasjoner. Det kalles når vi returnerer et objekt i klassen etter verdien. En kopikonstruktør anbefales også å brukes i tilstanden når vi passerer et objekt i klassen med en verdi som en parameter når vi oppretter et objekt som er opprettet av avhengig av det andre objektet som tilhører samme klasse.

Typer en kopikonstruktør

Det er to typer kopikonstruktører.

Kopier konstruktør (standard)

Hvis brukeren ikke definerer noen kopikonstruktør, leverer kompilatoren i dette tilfellet sin konstruktør.

Brukerdefinert konstruktør

Programmereren definerer alltid den brukerdefinerte konstruktøren.

Når trenger vi en kopikonstruktør?

Hvis vår kopikonstruktør ikke er definert, oppretter kompilatoren C ++ den kopikonstruktøren som er standard. Vi må definere konstruktøren vår når et objekt bruker pekere, dynamisk minnetildeling eller andre ressurser.

Syntaks

Name_of_class (const name_of_class & object_name)

// konstruktør kropp

Etter å ha brukt kopikonstruktøren, får vi to eksemplarer. Den ene er kjent som en grunne kopi, mens den andre er en dyp kopi. Den grunne kopien er produsert av standard kopikonstruktør. Mens den dype kopikonstruktøren tildeler minnet automatisk, kopierer den den faktiske verdien. De kopierte og faktiske verdiene lagres forskjellige steder inne i minnet. Det sies at det kreves en dyp kopi mens du oppretter en brukerdefinert konstruktør.

Implementering av en kopikonstruktør

Vi har implementert koden i tekstredigereren til Ubuntu, og den resulterende verdien oppnås ved utførelse på Linux -terminalen.

Dette programmet vil bruke det objektorienterte programmeringskonseptet, ettersom konstruktører brukes til å lage klasser. En klasse opprettes med den private delen som har heltallsverdier. I den offentlige delen opprettes en konstruktør med navnet på klassen. Denne konstruktøren vil bruke to verdier i parameteren for å motta verdien som er gitt fra hovedprogrammet. Inne i konstruktøren tildeles de sendte verdiene til de nye variablene.

Etter konstruktøren er det igjen opprettet en ny konstruktør. Det er en kopiert konstruktør. Som vi har beskrevet ovenfor, tar denne konstruktøren klassenavnet, og objektet som er opprettet.

Så har vi brukt to funksjoner, getX () og Get (), som vil returnere variabelenes verdi. I hovedprogrammet kalles konstruktører ved å bruke klassenavnet, hver (original), og kopikonstruktøren inneholder argumenter i parameteren mens du ringer. Den normale konstruktøren inneholder to verdier som sendes til variabelen. Og kopikonstruktøren er tildelt med gjenstanden for den første klassen. For å vise den resulterende verdien, vil vi kalle get -funksjonen ved å bruke objekter fra begge konstruktører.

Vi lagrer koden og utfører den ved å bruke kompilatoren g++.

Ved utførelse av kildekoden, kan du se at begge verdiene er de samme som konstruktørene passerte enten fra den opprinnelige eller av kopikonstruktøren.

Koblet listekonsept i C++

En koblet liste er en datastruktur som inneholder flere noder koblet gjennom adressene som er lagret i hver node.

Struct Node

Heltalldata;
struct node *next_part;
;

Vi lager en struktur som har en datadel som lagrer verdiene i den og den neste delen som lagrer adressen til den tilstøtende noden. Neste trinn vi gjør er å initialisere nodene i hovedprogrammet. Alle nodene er erklært som null ved å bruke pekerne.

Hver datadel av noden er tildelt av verdiene. Dette gjøres ved å få tilgang til den delen av noden.

En -> data = 1;

Tilsvarende får alle nodene sine relevante data.

Det viktigste i den koblede listen er forbindelsen mellom nodene som er opprettet. Dette gjøres når den neste delen av den ene noden er tilordnet adressen til den andre noden; Tilsvarende inneholder den andre noden adressen til den tredje. Og så videre fortsetter denne prosessen til den siste noden. Den siste nodens neste del er erklært null da det ikke er noen ytterligere node her.

Kopieringskonstruktøren og den koblede listen i C++

For å bruke en kopikonstruktør i den koblede listen, har vi brukt en struktur for å lage noden. Etter å ha stengt strukturen, brukes en klasse med navnet Linked_list her. Den private delen vil inneholde variablene til et peker-type hode og en hale. En normal konstruktør tildeler verdiene til hodet og haledeler i den offentlige delen.

To variabler av heltallstype vil akseptere verdiene som vil bli sendt fra hovedprogrammet ved å lage objektet. Disse variablene er tilordnet hode- og halevariablene for å lagre verdier i dem. Etter den normale konstruktøren er en kopikonstruktør erklært. Dette vil ha samme navn, og parameteren vil inneholde et konstant klassenavn med objektet. Denne konstruktøren er også tilordnet de samme verdiene. Men disse er tilgjengelig med objektene. Vi får disse verdiene ved å bruke get () -funksjonen. Begge verdiene i variabelen vil bli returnert.

Etter konstruktøren brukes en enkel funksjon å legge til en node til den eksisterende noden. En ny node med temp -navn opprettes. Datadelen er tilordnet med verdien. Og neste del er erklært som null. Her sjekker vi om noden lagt til er den første eller den koblede listen allerede inneholder en node i den. Så en if-ests-uttalelse brukes her. Den vil sjekke om hodet er lik null, så tildeles hodet og halen verdien av "TMP". Men i et annet tilfelle, hvis de ikke er null, blir halens neste del tildelt med adressen til en ny node. Det betyr at "TMP" vil inneholde adressen til halen. Og halen vil få verdien oppdatert.

Nå i hovedprogrammet vil vi lage objektet for klassen; Ved å lage objektet kalles konstruktører. Originalen og kopikonstruktøren vil inneholde parameterverdiene. Kopieringskonstruktøren oppretter objektet og er tildelt med gjenstanden for den opprinnelige konstruktøren.

Disse verdiene vises. For å se den resulterende verdien, utfør programmet på terminalen. Du kan se at begge konstruktøren har de samme verdiene.

Konklusjon

Denne artikkelen forklarer arbeid og opprettelse av en kopikonstruktør i den koblede listen ved hjelp av C++. Dette gjøres ved å forklare kopikonstruktøren, dens typer og bruk i et enkelt program demonstrert i eksemplet. Videre blir også konseptet med koblet listeoppretting forklart. Et kombinert eksempel på en lenket liste med kopikonstruktøren brukes til å fjerne enhver tvetydighet for sluttbrukeren.