Kopier konstruktører i C ++

Kopier konstruktører i C ++
Kopier konstruktører er konstruktører som brukes til å duplisere det nåværende objektet i en bestemt klasse. Det er vanligvis i formatet z (z &), der z er klassenavnet. Alle klasser har en standard kopikonstruktør spesifisert av kompilatoren. Kopikonstruktøren er identisk med standardkonstruktøren, med unntak av at argumentet ville være et annet array -element, og den nylig opprettede matrisen er blitt justert til dimensjonene til parameterens datatype og erklært til parameterens matriseinnhold. Ved å bruke forskjellige eksempler, skal vi diskutere kopikonstruktøren og dens kategorier i denne artikkelen.

Bruke kopikonstruktøren

I C ++ brukes kopikonstruktøren til å duplisere innholdet fra det ene objektet til det andre. La oss nå se på et eksempel for å demonstrere hvordan vi bruker den dype kopikonstruktøren.

Først av alt integrerte vi overskriftsfilen for input og output -funksjonalitet. Etter dette brukte vi standard navneområdet. Nå skal vi erklære et klasserom '. Vi initialiserte lengden og bredden på rommet og satte den privat. Datatypen på lengden og bredden er 'dobbelt' her.

Nå erklærte vi variabelen 'lengde' og 'bredde' ved å bruke den parameteriserte konstruktøren. Her passerte vi disse parametrene til "Room" -konstruktøren, og dette er satt til å være offentlig. I tillegg til dette benyttet vi en kopikonstruktør. Vi kopierer innholdet i "OBJ" -argumentet. Funksjonen CalculateArea () blir kalt for å finne området i rommet ved å multiplisere verdien av lengden med verdien av høyden.

I det påfølgende trinnet erklærte vi hovedfunksjonen (). Her konstruerte vi et objekt i "rom" -klassen og spesifiserte også verdiene for dens lengde og bredde. Nå må du bare kopiere dataene fra 'Room1' til 'Room2'. Etter dette brukte vi 'cout' for å vise områdene i begge rommene. Til slutt brukes returen0 til å avslutte programmet.

Bruk den grunne kopikonstruktøren

Når en klasse ikke samhandler dynamisk med minnetildeling, brukes den grunne kopikonstruktøren. To objekter i den grunne kopikonstruktøren vil referere til en lignende minneadresse. Referanser til faktiske elementer er replikert i en grunne kopi. En standard kopikonstruktør er spesifisert av kompilatoren. Det er litt for bitreplika av en ting. Nedenfor brukes en forekomst for å illustrere forestillingen om en grunne kopikonstruktør.

I begynnelsen av programmet introduserte vi to nødvendige biblioteker, og . Sammen med dette benyttet vi også et standard navneområde. Nå opprettet vi en klasse som heter 'Computer'. Vi konstruerte en peker i klassen og satte sin datatype 'karakter'.

Vi erklærte offentlig funksjonen til klassen 'datamaskin', og her passerte vi den definerte konstruktøren som en parameter til denne funksjonen. Vi opprettet en dynamisk minnetildeling her og satte den lik variabelen til pekeren. Det tillater brukeren å lage et minne for en attributt eller til og med en matrise i programmet.

Videre brukte vi tomrommet Concatenate () -funksjonen. For å sammenkoble to strenger, benyttet vi Strcat () -metoden. Nå erklærte vi en kopikonstruktør av klasse 'datamaskin'. For å vise utgang. Nå er det på tide å ringe main () -funksjonen. Vi benyttet kopikonstruktøren inne i kroppen til hovedfunksjonen (). Det kalles en konstruktør fordi den blir brukt til å generere et objekt.

Så kopieringskonstruktøren som navnet tilsier, genererer et nytt objekt som er en identisk kopi av originalkopien. Vi opprettet to objekter og spesifiserte verdiene til disse objektene. Deretter brukte vi displayet () -funksjonen individuelt på disse objektene for å få resultatet.

I neste trinn er A1 fristende til å sammenkoble, og vi brukte 'A1.concatenate () 'funksjon. Her setter vi også en verdi 'teknologi' for sammenkobling. Vi benyttet igjen Display () -metoden for å få utdataene. Nå avslutter vi programmet ved å bruke 'Return 0'.

Bruk den dype kopikonstruktøren

Dyp kopi krever et unikt minneplass for dupliserte data. Som et resultat er originalen og kopien distinkt. Endringer implementert i ett minneområde har ingen innvirkning på kopien. Vi vil bruke en brukerdefinert kopikonstruktør mens vi konstruerer dynamisk minne med pekere. Begge enhetene vil referere til separate steder i minnet.

I tillegg benytter vi oss av standard navneområdet. Vi lager nå en klasse som heter 'programmeringsslanguage.'Vi opprettet en klassepeker og definerte datatypen til' karakter."Deretter definerte vi funksjonen til klassen 'programmeringsspråk' som offentlig, og vi ga den spesifiserte konstruktøren som et argument.

Her konstruerte vi en dynamisk minnetildeling og tildelte den tilsvarer pekervariabelen. Det gjør oss i stand til å skaffe lagring for et datasett eller en matrise i programmet. Funksjonen kalles her, og konstruktøren av programmeringsspråkklassen er gitt som en parameter. Vi har brukt tomrommet -metoden () metoden ().

Videre vil vi bruke strcat () -teknikken for å sammenkoble to strenger sammen. Nå opprettet vi en kopikonstruktør av klassen 'programmeringsspråk'. Dataene vises ved å bruke Void Display () -metoden og 'Cout' -kommandoen. Hovedfunksjonen () vil nå bli kalt. I kroppen til hovedfunksjonen () har vi brukt kopikonstruktøren. Dette dupliserer et forhåndsdefinert objekt. Derfor vil vi normalt ikke endre det faktiske objektet. Vi lager to objekter og tildeler objektet 'A1' verdien 'Python.'Objektet' A2 'er lik objektet' A1 'i neste fase.

For å få utdataene har vi brukt Display () -metoden på hvert av disse objektene individuelt. Nå brukte vi kommandoen 'Return 0' for å avslutte programmet.

Konklusjon

I denne artikkelen har vi avklart arbeidet med en kopikonstruktør på C ++ språk. Hver gang et objekt gjøres, er en konstruktør en spesifikk form for en avledet klasse som er erklært umiddelbart. Kopi -konstruktører er de konstruktørene som vil bli brukt til å gjenskape et element i en spesifisert klasse som allerede eksisterer. Vi observerte også hvordan du bruker grunne kopikonstruktør og dyp kopikonstruktør ved hjelp av forskjellige tilfeller.