Hur man implementerar Copy Constructor i C ++?



Att förstå konstruktörer har varit en gåta för många. Den här artikeln hjälper dig att avmystifiera konceptet Copy Constructor In C ++

Förståelse Konstruktörer har varit en gåta för många. Den här artikeln hjälper dig att avmystifiera konceptet Copy Constructor In C ++. Följande tips kommer att behandlas i den här artikeln,

Så låt oss komma igångmed den här artikeln om Copy Constructor i C ++





jenkins vs marionett vs kock

En kopiekonstruktör är en konstruktör som initialiserar ett objekt i en klass med ett annat objekt av samma klass.

Syntax:



Vi har nyckelordet const eftersom vi vill göra värdet konstant och se till att det inte ändras någonstans i koden. Som en standardkonstruktör tillhandahålls också en kopiekonstruktör av kompilatorn. Detta kallas Standard Copy Constructor. Kopikonstruktörer kan göras privata. Vi kan inte kopiera klassens objekt när vi gör kopikonstruktören privat.

Här är en exempelkod :

#include using namespace std class test {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Normal konstruktör kallas här test t2 = t1 // Kopiekonstruktör kallas här cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Produktion:



Output-Copy Constructor i C ++ - Edureka

Förklaring

Ovanstående program är en grundläggande demo av en kopieringskonstruktör. Vi har ett klassprov med en privat datamedlem av typen int som heter x. Sedan har vi en parametrerad konstruktör som tilldelar 7 till variablerna x. Vi har en kopiekonstruktör, som instantierar värdet av t2 med värdet av t1. Adress till t2 skickas som innehåller värdet på t1 och tilldelas x. Det finns en get-funktion som returnerar värdet på x.

Huvudfunktionen har ett objekt av klassprov som kallas t1. Det är ett värde associerat med detta objekt, detta är en parameter. Huvudfunktionen har ett annat objekt av klasstest som heter t2. Detta initieras med hjälp av variabeln t1 och kopiekonstruktören anropas här. Slutligen kallas get-funktionen med avseende på t1 och t2 för att få värdet x.

Typer

Det finns två typer av kopikonstruktören.
Con Grundkonstruktör
⦁ Deep Copy Constructor

Fortsätter med den här artikeln om Copy Constructor i C ++

Grunt kopia konstruktör:

En Shallow Copy Constructor är en standard Copy Constructor.

Exempel:

Två personer har åtkomst till en databas samtidigt och gör ändringar i värdena över två olika system. Om de gör ändringar i databasen kommer båda dessa ändringar att visas i databasen. Båda objekten pekar på samma minnesplats. Det här är Shallow Copy Constructor. Detta händer oftast när vi arbetar med standardkopiekonstruktören. Här är en exempelkod för: Shallow Copy Constructor:

#include using namespace std class test {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:

Förklaring:

I ovanstående kod använder vi en standardkopiekonstruktör som tillhandahålls av kompilatorn. Därför är det en Shallow Copy Constructor.

Fortsätter med den här artikeln om Copy Constructor i C ++

Djup kopia konstruktör

Deep Copy Constructor är en användardefinierad kopikonstruktör.
Till exempel:
När två personer måste göra en presentation och båda kopierar från samma källa är kopiorna separata. Så när du gör ändringar påverkas inte bara den andra kopian. Det här är Deep Copy Constructor. Båda objekten pekar på olika minnesplatser och förändringarna i det ena kommer inte att ha några effekter på det andra. Minnet tilldelas dynamiskt.

Här är en exempelkod för: Deep Copy Constructor:

#include using namespace std class test {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Normal konstruktör kallas här test t2 = t1 // Kopiekonstruktör kallas här cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Produktion:

Förklaring

Det här är samma kod som vi har använt ovan, vilket ger liknande resultat. Det är en användardefinierad Copy Constructor och därför är det en Deep Copy Constructor.

Således har vi kommit till slutet av den här artikeln om ”Copy Constructor in C ++”. Om du vill veta mer, kolla in av Edureka, ett pålitligt online-lärande företag. Edurekas Java J2EE- och SOA-utbildning och certifieringskurs är utformad för att träna dig för både grundläggande och avancerade Java-koncept tillsammans med olika Java-ramverk som Hibernate & Spring.

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen på den här bloggen så kommer vi tillbaka till dig så snart som möjligt.