Hoe Copy Constructor in C ++ te implementeren?



Het begrijpen van constructeurs is voor velen een raadsel geweest. Dit artikel zal u helpen het concept van Copy Constructor in C ++ te ontrafelen

Begrip Constructeurs is voor velen een raadsel geweest. Dit artikel zal u helpen het concept van Copy Constructor in C ++ te ontrafelen. De volgende tips komen in dit artikel aan bod:

Dus laten we beginnenmet dit artikel over Copy Constructor in C ++





Een Copy Constructor is een Constructor die een object van een klasse initialiseert met een ander object van dezelfde klasse.

Syntaxis:



We hebben het sleutelwoord const omdat we de waarde constant willen maken en ervoor willen zorgen dat deze niet ergens in de code wordt gewijzigd. Net als een standaardconstructor wordt ook een kopieerconstructor geleverd door de compiler. Dit heet Default Copy Constructor. Kopieerconstructeurs kunnen privé worden gemaakt. We kunnen de objecten van de klasse niet kopiëren als we de kopieerconstructor privé maken.

Hier is een voorbeeldcode :

#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) // Normale constructor wordt hier genoemd test t2 = t1 // Copy constructor wordt hier cout genoemd<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Uitgang:



Output-Copy Constructor in C ++ - Edureka

Uitleg

Het bovenstaande programma is een eenvoudige demo van een kopieerconstructor. We hebben een klassetest, met een privégegevenslid van het type int genaamd x. Dan hebben we een constructor met parameters, die 7 aan de variabelen x toekent. We hebben een kopieerconstructor, die de waarde van t2 instantieert met de waarde van t1. Het adres van t2 wordt verzonden dat de waarde van t1 bevat en is toegewezen aan x. Er bestaat een get-functie die de waarde van x retourneert.

De hoofdfunctie heeft een object van klassetest genaamd t1. Er is een waarde gekoppeld aan dit object, dit is een parameter. De hoofdfunctie heeft een ander object van de klassetest genaamd t2. Dit wordt geïnitialiseerd door de variabele t1 te gebruiken en de kopieerconstructor wordt hier aangeroepen. Ten slotte wordt de functie get aangeroepen met betrekking tot t1 en t2 om de waarde van x te krijgen.

Types

tableau stap voor stap tutorial

Er zijn twee soorten kopieerconstructies.
⦁ Ondiepe kopieerconstructor
⦁ Deep Copy Constructor

Verder gaan met dit artikel over Copy Constructor in C ++

Ondiepe kopie constructor:

Een Shallow Copy Constructor is een standaard Copy Constructor.

hoe je een screenshot maakt in selenium

Voorbeeld:

Twee mensen hebben tegelijkertijd toegang tot een database en brengen wijzigingen aan in de waarden op twee verschillende systemen. Als ze wijzigingen in de database aanbrengen, worden beide wijzigingen in de database weergegeven. Beide objecten wijzen naar dezelfde geheugenlocatie. Dit is de Shallow Copy Constructor. Dit gebeurt meestal wanneer we werken met de standaard kopieerconstructor. Hier is een voorbeeldcode voor: 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 } 

Uitgang:

Uitleg:

In de bovenstaande code gebruiken we een standaard kopieerconstructor die wordt geleverd door de compiler. Daarom is het een Shallow Copy Constructor.

Verder gaan met dit artikel over Copy Constructor in C ++

Constructor voor diepe kopieën

Deep Copy Constructor is een door de gebruiker gedefinieerde kopieerconstructor.
Bijvoorbeeld:
Als twee mensen een presentatie moeten maken en ze kopiëren allebei uit dezelfde bron, zijn de kopieën gescheiden. Dus als u wijzigingen aanbrengt, heeft dit geen invloed op de andere kopie. Dit is Deep Copy Constructor. Beide objecten wijzen naar verschillende geheugenlocaties en de veranderingen in de ene hebben geen effect op de andere. Het geheugen wordt dynamisch toegewezen.

Hier is een voorbeeldcode voor: 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) // Normale constructor wordt hier genoemd test t2 = t1 // Copy constructor wordt hier cout genoemd<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Uitgang:

Uitleg

Dit is dezelfde code die we hierboven hebben gebruikt, met vergelijkbare output. Het is een door de gebruiker gedefinieerde Copy Constructor en daarom is het een Deep Copy Constructor.

Hiermee zijn we aan het einde gekomen van dit artikel over ‘Copy Constructor in C ++’. Als je meer wilt weten, bekijk dan de door Edureka, een vertrouwd online leerbedrijf. Edureka's Java J2EE- en SOA-trainings- en certificeringscursus is ontworpen om u te trainen in zowel kern- als geavanceerde Java-concepten, samen met verschillende Java-frameworks zoals Hibernate & Spring.

Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte van deze blog en we nemen zo snel mogelijk contact met je op.