Kako implementirati konstruktor kopiranja v C ++?



Razumevanje konstruktorjev je bilo za mnoge enigma. Ta članek vam bo pomagal demistificirati koncept konstruktorja kopij v jeziku C ++

Razumevanje Konstruktorji je bila za mnoge enigma. Ta članek vam bo pomagal demistificirati koncept konstruktorja kopij v jeziku C ++. V tem članku bodo zajeti naslednji napotki:

Začnimo torejs tem člankom o Konstruktorju kopiranja v jeziku C ++





Konstruktor za kopiranje je konstruktor, ki inicializira objekt razreda z drugim objektom istega razreda.

Sintaksa:



Ključno besedo const imamo, ker želimo vrednost nastaviti konstantno in zagotoviti, da ni spremenjena nekje v kodi. Tako kot privzeti konstruktor tudi konstruktor kopij ponuja prevajalnik. To se imenuje privzeti konstruktor kopiranja. Konstruktorji kopij lahko postanejo zasebni. Objektov razreda ne moremo kopirati, ko konstruktor kopiranja naredimo zasebnega.

Tu je primer kode :

#include z uporabo imenskega prostora test std razreda {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) // Tu se imenuje običajni konstruktor test t2 = t1 // Tu se imenuje konstruktor kopiranja cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Izhod:



Konstruktor izhodnih kopij v jeziku C ++ - Edureka

Pojasnilo

Zgornji program je osnovna predstavitev konstruktorja kopij. Imamo preizkus razreda z zasebnim podatkovnim članom tipa int, imenovanim x. Nato imamo parametriziran konstruktor, ki spremenljivkam x dodeli 7. Imamo konstruktor kopij, ki vrednost t2 ustvari z vrednostjo t1. Pošlje se naslov t2, ki vsebuje vrednost t1 in je dodeljen x. Obstaja funkcija get, ki vrne vrednost x.

Glavna funkcija ima predmet preizkusa razreda, imenovan t1. S tem objektom je povezana vrednost, to je parameter. Glavna funkcija ima še en objekt preizkusa razreda, imenovan t2. To se inicializira s pomočjo spremenljivke t1 in tukaj se pokliče konstruktor kopiranja. Nazadnje se funkcija get prikliče glede na t1 in t2, da dobimo vrednost x.

Vrste

Obstajata dve vrsti konstruktorja kopij.
Con Konstruktor za plitko kopiranje
Con Konstruktor za globoko kopiranje

Nadaljujemo s tem člankom o Konstruktorju kopiranja v jeziku C ++

kako natisniti polje php -

Konstruktor za plitve kopije:

Konstruktor za plitko kopiranje je privzeti konstruktor za kopiranje.

Primer:

Dve osebi hkrati dostopata do zbirke podatkov in spreminjata vrednosti v dveh različnih sistemih. Če bodo potem spremenili bazo podatkov, bosta obe spremembi prikazani v bazi podatkov. Oba predmeta bosta kazala na isto lokacijo pomnilnika. To je konstruktor za plitve kopije. To se večinoma zgodi, ko delamo s privzetim konstruktorjem kopij. Tu je primer kode za: konstruktor za površinsko kopiranje:

kako uporabljati google platformo v oblaku -
#include z uporabo imenskega prostora test std razreda {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 } 

Izhod:

Pojasnilo:

V zgornji kodi uporabljamo privzeti konstruktor kopij, ki ga ponuja prevajalnik. Zato je konstruktor plitve kopije.

Nadaljujemo s tem člankom o Konstruktorju kopiranja v jeziku C ++

Konstruktor globoke kopije

Deep Copy Constructor je uporabniško določen konstruktor kopij.
Na primer:
Če morata predstaviti dve osebi in oba kopirata iz istega vira, sta kopiji ločeni. Torej, ko naredite spremembe, to ne vpliva samo na drugo kopijo. To je Deep Copy Constructor. Oba predmeta bosta usmerjena na različna pomnilniška mesta, spremembe enega pa na drugega ne bodo vplivale. Pomnilnik je dinamično dodeljen.

Tu je primer kode za: Konstruktor za globoko kopiranje:

#include z uporabo imenskega prostora test std razreda {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) // Tu se imenuje običajni konstruktor test t2 = t1 // Tu se imenuje konstruktor kopiranja cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Izhod:

Pojasnilo

To je ista koda, ki smo jo uporabili zgoraj, in daje podobne rezultate. Je uporabniško določen konstruktor kopiranja, zato je konstruktor globokega kopiranja.

Tako smo prišli do konca tega članka o 'Konstruktorju kopij v jeziku C ++'. Če želite izvedeti več, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje. Edurekin tečaj za usposabljanje in certificiranje Java J2EE in SOA je zasnovan tako, da vas usposobi za temeljne in napredne koncepte Java, skupaj z različnimi Java okviri, kot sta Hibernate & Spring.

Imate vprašanje za nas? Prosimo, omenite to v oddelku za komentarje tega spletnega dnevnika, mi pa se vam bomo javili v najkrajšem možnem času.