Kuinka toteuttaa kopiorakentaja C ++: ssa?



Rakentajien ymmärtäminen on ollut arvoitus monille. Tämä artikkeli auttaa sinua selvittämään kopionrakentajan käsitteen C ++: ssa

Ymmärtäminen Rakentajat on ollut arvoitus monille. Tämä artikkeli auttaa sinua selvittämään kopionrakentajan käsitteen C ++: ssa. Seuraavat vihjeet käsitellään tässä artikkelissa,

Joten aloitetaantämän artikkelin kanssa Copy Constructor C ++ -sovelluksessa





Kopiokonstruktori on konstruktori, joka alustaa luokan objektin käyttämällä samaa saman luokan objektia.

Syntaksi:



Meillä on avainsana const, koska haluamme tehdä arvosta vakion ja varmistaa, että sitä ei ole muokattu jonnekin koodissa. Kuten oletusrakentaja, kääntäjä tarjoaa myös kopiorakentajan. Tätä kutsutaan kopion oletusrakentajaksi. Kopiorakentajat voidaan tehdä yksityisiksi. Emme voi kopioida luokan objekteja, kun teemme kopiosuunnittelijasta yksityisen.

Tässä on esimerkkikoodi :

#include käyttämällä nimitilaa vakioluokan testi {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {testi t1 (7) // Normaalia konstruktoria kutsutaan tässä testiksi t2 = t1 // Kopiorakentaja kutsutaan tähän cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Tuotos:



binaarinen hakualgoritmi Java-sovelluksessa

Tulostus- ja kopiointirakentaja C ++ - Edurekassa

Selitys

Yllä oleva ohjelma on kopiorakentajan perusdemo. Meillä on luokan testi, jossa on yksityinen tietojäsen, jonka tyyppi on int, nimeltään x. Sitten meillä on parametroitu konstruktori, joka määrittää 7 muuttujille x. Meillä on kopiorakentaja, joka instantisoi t2: n arvon t1: n arvolla. Lähetetään t2: n osoite, joka pitää arvon t1 ja osoitetaan x: lle. On olemassa get-funktio, joka palauttaa x: n arvon.

Päätoiminnolla on luokkatestin kohde nimeltä t1. Tähän objektiin on liitetty arvo, tämä on parametri. Päätoiminnolla on toinen luokkatestin kohde nimeltä t2. Tämä alustetaan käyttämällä t1-muuttujaa ja kopiokonstruktori kutsutaan tähän. Lopuksi get-funktiota kutsutaan suhteessa t1 ja t2 x: n arvon saamiseksi.

Tyypit

Kopiorakentajaa on kahta tyyppiä.
⦁ Matala kopiointityökalu
⦁ Deep Copy Constructor

Siirrytään tähän artikkeliin Copy Constructor C ++ -sovelluksessa

Matalan kopion rakentaja:

Matala kopiointirakentaja on kopioiden oletusrakentaja.

Esimerkki:

Kaksi ihmistä käyttää tietokantaa samanaikaisesti ja tekee muutoksia arvoihin kahdessa eri järjestelmässä. Jos ne tekevät muutoksia tietokantaan, molemmat muutokset näkyvät tietokannassa. Molemmat objektit osoittavat samaan muistipaikkaan. Tämä on Shallow Copy Constructor. Tämä tapahtuu enimmäkseen, kun työskentelemme oletuskopiointirakentajan kanssa. Tässä on esimerkkikoodi: Shallow Copy Constructor:

kuinka muuntaa desimaali binääriksi pythonissa
# sisällyttää nimiavaruuden käyttäminen vakioluokan testi {public: int y, z test (int y1, int z1) {y = y1 z = z1}} int main () {testaa (7,13) cout<<'the sum is: '<< a.y+a.z return 1 } 

Tuotos:

Selitys:

Yllä olevassa koodissa käytämme kääntäjän tarjoamaa oletusarvoista kopiosuunnittelijaa. Siksi se on matalan kopion rakentaja.

Siirrytään tähän artikkeliin Copy Constructor C ++ -sovelluksessa

Syvä kopiorakentaja

Deep Copy Constructor on käyttäjän määrittelemä kopiorakentaja.
Esimerkiksi:
Kun kahden ihmisen on tehtävä esitys ja molemmat kopioivat samasta lähteestä, kopiot ovat erillisiä. Joten kun teet muutoksia, se ei vaikuta toiseen kopioon. Tämä on Deep Copy Constructor. Molemmat objektit osoittavat eri muistipaikoille, eikä yhden muutoksilla ole vaikutuksia toiseen. Muisti varataan dynaamisesti.

Tässä on esimerkkikoodi: Deep Copy Constructor:

#include käyttämällä nimitilaa vakioluokan testi {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {testi t1 (7) // Normaalia konstruktoria kutsutaan tässä testiksi t2 = t1 // Kopiorakentaja kutsutaan tähän cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Tuotos:

kuinka nostaa luku voimaksi jaavassa

Selitys

Tämä on sama koodi, jota olemme käyttäneet yllä, joka antaa samanlaisen tuotoksen. Se on käyttäjän määrittelemä kopiointirakentaja ja siten se on syväkopiointirakentaja.

Siksi olemme päässeet tämän artikkelin 'Kopiointirakentaja C ++ -sivulle' loppuun. Jos haluat oppia lisää, tutustu Edureka, luotettava verkko-oppimisyritys. Edurekan Java J2EE- ja SOA-koulutus- ja sertifiointikurssit on suunniteltu kouluttamaan sekä ydin- että edistyneitä Java-konsepteja sekä erilaisia ​​Java-kehyksiä, kuten Hibernate & Spring.

Onko sinulla kysymys meille? Mainitse se tämän blogin kommenttiosassa ja otamme sinuun yhteyttä mahdollisimman pian.