Sådan implementeres Copy Constructor i C ++?



Forståelse af konstruktører har været en gåde for mange. Denne artikel hjælper dig med at afmystificere konceptet Copy Constructor In C ++

Forståelse Konstruktører har været en gåde for mange. Denne artikel hjælper dig med at afmystificere konceptet Copy Constructor In C ++. Følgende punkter vil blive dækket i denne artikel,

ligheder mellem java og javascript

Så lad os komme i gangmed denne artikel om Copy Constructor i C ++





En kopikonstruktør er en konstruktør, der initialiserer et objekt i en klasse ved hjælp af et andet objekt i samme klasse.

Syntaks:



Vi har nøgleordet const, fordi vi vil gøre værdien konstant og sørge for, at den ikke ændres et eller andet sted i koden. Som en standardkonstruktør leveres også en kopikonstruktør af compileren. Dette kaldes Standard Copy Constructor. Kopikonstruktører kan gøres private. Vi kan ikke kopiere klassens genstande, når vi gør kopikonstruktøren privat.

Her er en eksempelkode :

#include ved hjælp af namespace 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 kaldes her test t2 = t1 // Kopi konstruktør kaldes her cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Produktion:



Output-Copy Constructor i C ++ - Edureka

Forklaring

Ovenstående program er en grundlæggende demo af en kopikonstruktør. Vi har en klassetest med et privat datamedlem af typen int kaldet x. Derefter har vi en parameteriseret konstruktør, der tildeler 7 til variablerne x. Vi har en kopikonstruktør, som instantierer værdien af ​​t2 med værdien af ​​t1. Adressen til t2 sendes, der indeholder værdien af ​​t1 og tildeles x. Der findes en get-funktion, der returnerer værdien af ​​x.

Hovedfunktionen har et objekt fra klassetesten kaldet t1. Der er en værdi forbundet med dette objekt, dette er en parameter. Hovedfunktionen har et andet objekt i klassetesten kaldet t2. Dette initialiseres ved hjælp af t1-variablen, og kopikonstruktøren kaldes her. Endelig kaldes get-funktionen med hensyn til t1 og t2 for at få værdien af ​​x.

Typer

Der er to typer kopikonstruktør.
Con Konstruktør til lav kopi
⦁ Deep Copy Constructor

Fortsætter med denne artikel om Copy Constructor i C ++

Lavkonstruktør:

En Shallow Copy Constructor er en standard Copy Constructor.

Eksempel:

To personer får adgang til en database på samme tid og foretager ændringer i værdierne over to forskellige systemer. Hvis de foretager ændringer i databasen, vises begge disse ændringer i databasen. Begge objekter peger på den samme hukommelsesplacering. Dette er Shallow Copy Constructor. Dette sker for det meste, når vi arbejder med standardkopiekonstruktøren. Her er en eksempelkode til: Shallow Copy Constructor:

#include ved hjælp af namespace 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 } 

Produktion:

php forskel mellem ekko og print

Forklaring:

I ovenstående kode bruger vi en standardkopiekonstruktør leveret af compileren. Derfor er det en Shallow Copy Constructor.

Fortsætter med denne artikel om Copy Constructor i C ++

Dyb kopi konstruktør

Deep Copy Constructor er en brugerdefineret copy constructor.
For eksempel:
Når to personer skal lave en præsentation, og de begge kopierer fra samme kilde, er kopierne separate. Så når du foretager ændringer, påvirkes kun den anden kopi ikke. Dette er Deep Copy Constructor. Begge objekter peger på forskellige hukommelsesplaceringer, og ændringerne i den ene har ingen virkninger på den anden. Hukommelsen tildeles dynamisk.

Her er en eksempelkode til: Deep Copy Constructor:

#include ved hjælp af namespace 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 kaldes her test t2 = t1 // Kopi konstruktør kaldes her cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Produktion:

Forklaring

Dette er den samme kode, som vi har brugt ovenfor, hvilket giver lignende output. Det er en brugerdefineret Copy Constructor, og derfor er det en Deep Copy Constructor.

Således er vi nået til slutningen af ​​denne artikel om 'Copy Constructor in C ++'. Hvis du ønsker at lære mere, skal du tjekke af Edureka, et betroet online læringsfirma. Edurekas Java J2EE- og SOA-uddannelses- og certificeringskursus er designet til at træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Spring.

Har du et spørgsmål til os? Nævn det i kommentarsektionen på denne blog, og vi vender tilbage til dig hurtigst muligt.