Hvordan implementere Copy Constructor i C ++?



Forståelse av konstruktører har vært en gåte for mange. Denne artikkelen vil hjelpe deg med å avmystifisere konseptet Copy Constructor In C ++

Forståelse Konstruktører har vært en gåte for mange. Denne artikkelen vil hjelpe deg med å avmystifisere konseptet Copy Constructor In C ++. Følgende tips vil bli dekket i denne artikkelen,

Så la oss komme i gangmed denne artikkelen om Copy Constructor i C ++





En kopikonstruktør er en konstruktør som initialiserer et objekt i en klasse ved hjelp av et annet objekt i samme klasse.

Syntaks:



Vi har nøkkelordet const fordi vi ønsker å gjøre verdien konstant og sørge for at den ikke blir endret et sted i koden. Som en standardkonstruktør leveres også en kopikonstruktør av kompilatoren. Dette kalles Standard Copy Constructor. Kopikonstruktører kan gjøres private. Vi kan ikke kopiere klassens objekter når vi gjør kopikonstruktøren privat.

Her er en eksempelkode :

hva er forskjellen mellom overstyring og overbelastning
#include ved bruk av navneområdet std-klassetest {privat: int x offentlig: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Normal konstruktør kalles her test t2 = t1 // Kopikonstruktør kalles her cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Produksjon:



Output-Copy Constructor i C ++ - Edureka

Forklaring

Ovennevnte program er en grunnleggende demo av en kopikonstruktør. Vi har en klassetest, med et privat datamedlem av typen int kalt x. Så har vi en parameterisert konstruktør, som tilordner 7 til variablene x. Vi har en kopikonstruktør, som instantierer verdien av t2 med verdien av t1. Adressen til t2 sendes som holder verdien av t1 og tildeles x. Det finnes en get-funksjon som returnerer verdien av x.

Hovedfunksjonen har et objekt av klassetesten kalt t1. Det er en verdi knyttet til dette objektet, dette er en parameter. Hovedfunksjonen har et annet objekt av klassetesten kalt t2. Dette initialiseres ved å bruke variabelen t1, og kopikonstruktøren kalles her. Til slutt kalles get-funksjonen med hensyn til t1 og t2 for å få verdien av x.

Typer

Det er to typer kopikonstruktører.
⦁ Konstruktør for grunne kopier
⦁ Deep Copy Constructor

Fortsetter med denne artikkelen om Copy Constructor i C ++

Grunnkopiekonstruktør:

En grunnleggende kopikonstruktør er en standard kopikonstruktør.

Eksempel:

implementering av en prioritert kø i java

To personer får tilgang til en database samtidig og gjør endringer i verdiene over to forskjellige systemer. Hvis de gjør endringer i databasen, vil begge disse endringene vises i databasen. Begge objektene peker på samme minneplassering. Dette er Shallow Copy Constructor. Dette skjer for det meste når vi jobber med standard kopikonstruktør. Her er en eksempelkode for: Shallow Copy Constructor:

#include ved å bruke navneområdet std-klassetest {public: int y, z test (int y1, int z1) {y = y1 z = z1}} int main () {test a (7,13) cout<<'the sum is: '<< a.y+a.z return 1 } 

Produksjon:

Forklaring:

I koden ovenfor bruker vi en standard kopikonstruktør levert av kompilatoren. Derfor er det en Shallow Copy Constructor.

Fortsetter med denne artikkelen om Copy Constructor i C ++

Dyp kopikonstruktør

Deep Copy Constructor er en brukerdefinert kopikonstruktør.
For eksempel:
Når to personer må lage en presentasjon og begge kopierer fra samme kilde, er kopiene separate. Så når du gjør endringer, påvirkes ikke bare den andre kopien. Dette er Deep Copy Constructor. Begge objektene peker på forskjellige minneplasser, og endringene i det ene vil ikke ha noen innvirkning på det andre. Minnet er dynamisk tildelt.

Her er en eksempelkode for: Deep Copy Constructor:

#include ved bruk av navneområdet std-klassetest {privat: int x offentlig: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Normal konstruktør kalles her test t2 = t1 // Kopikonstruktør kalles her cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Produksjon:

java forskjell mellom redskaper og utvidelser

Forklaring

Dette er den samme koden som vi har brukt ovenfor, og gir lignende utdata. Det er en brukerdefinert Copy Constructor, og derfor er det en Deep Copy Constructor.

Dermed har vi kommet til en slutt på denne artikkelen om ‘Copy Constructor in C ++’. Hvis du ønsker å lære mer, sjekk ut av Edureka, et pålitelig online læringsfirma. Edurekas Java J2EE- og SOA-opplærings- og sertifiseringskurs er designet for å trene deg for både kjerne- og avanserte Java-konsepter sammen med forskjellige Java-rammer som Hibernate & Spring.

Har du spørsmål til oss? Vennligst nevn det i kommentarfeltet på denne bloggen, så kommer vi tilbake til deg så snart som mulig.