Kuidas rakendada koopiaehitust C ++ versioonis?



Konstruktorite mõistmine on paljude jaoks olnud mõistatuseks. See artikkel aitab teil kopeerimiskonstruktori kontseptsiooni lahti mõtestada C ++ versioonis

Mõistmine Konstruktorid on paljude jaoks olnud mõistatuseks. See artikkel aitab teil kopeerimiskonstruktori kontseptsiooni lahti mõtestada C ++ versioonis. Järgmisi näpunäiteid käsitletakse selles artiklis,

Alustagem siisselle artikliga Copy Constructor C ++ -s





Kopeerimiskonstruktor on konstruktor, mis initsialiseerib klassi objekti, kasutades sama klassi teist objekti.

Süntaks:



Meil on märksõna const, kuna tahame väärtuse muuta konstantseks ja veenduda, et seda ei muudetaks kuskil koodis. Sarnaselt vaikekonstruktorile pakub koopiakonstruktorit ka kompilaator. Seda nimetatakse kopeerimise vaikekonstruktoriks. Koopiakonstruktorid saab muuta privaatseks. Kui muudame koopiaehitaja privaatseks, ei saa me klassi objekte kopeerida.

mis on nukud devopsis

Siin on näite kood :

#include nimeruumi standardklassi testi kasutamine {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) // Siin nimetatakse tavalist konstruktorit test t2 = t1 // Kopeerimiskonstruktorit nimetatakse siin cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Väljund:



Väljundi-koopia ehitaja C ++ keeles - Edureka

Selgitus

Ülaltoodud programm on koopiaehitaja põhidemo. Meil on klassi test, mille privaatsete andmeliikmetega on tüüp int nimega x. Siis on meil parameetriga konstruktor, mis määrab muutujatele x 7. Meil on koopiaehitaja, mis instantiseerib t2 väärtuse t1 väärtusega. Saadetakse t2 aadress, mis hoiab väärtust t1 ja on määratud x-le. On olemas funktsioon get, mis tagastab x väärtuse.

Põhifunktsioonil on klassikatse objekt nimega t1. Selle objektiga on seotud väärtus, see on parameeter. Põhifunktsioonil on veel üks klassikatse objekt nimega t2. See lähtestatakse muutuja t1 abil ja siin kutsutakse koopia konstruktorit. Lõpuks nimetatakse funktsiooni get funktsioonide t1 ja t2 suhtes x väärtuse saamiseks.

Tüübid

Koopia konstruktorit on kahte tüüpi.
⦁ Madalate koopiate koostaja
⦁ Deep Copy Constructor

Selle artikliga C ++ Copy Constructor kohta jätkatakse

Madal koopia konstruktor:

Madalkoopiakonstruktor on vaikimisi koopiakonstruktor.

Näide:

Kaks inimest pääseb korraga andmebaasi juurde ja muudab väärtusi kahe erineva süsteemi kaudu. Kui nad teevad andmebaasis muudatusi, kuvatakse mõlemad muudatused andmebaasis. Mõlemad objektid osutavad samale mälupunktile. See on Shallow Copy Constructor. Enamasti juhtub see siis, kui töötame vaikekoopiate koostajaga. Siin on näite kood: Madalakoopiate koostaja

# kaasata nimeruumi standardklassi testi kasutamine {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 } 

Väljund:

Selgitus:

Ülaltoodud koodis kasutame kompilaatori pakutavat vaikekoopiakonstruktorit. Seega on tegemist madalate koopiate koostajaga.

Selle artikliga C ++ Copy Constructor kohta jätkatakse

Sügava koopia konstruktor

Deep Copy Constructor on kasutaja määratud koopia konstruktor.
Näiteks:
Kui kaks inimest peavad esitluse tegema ja mõlemad kopeerivad samast allikast, on koopiad eraldi. Seega, kui teete muudatusi, ei mõjuta see ainult teist koopiat. See on Deep Copy Constructor. Mõlemad objektid osutavad erinevatele mälupunktidele ja ühe muudatused ei mõjuta teist. Mälu eraldatakse dünaamiliselt.

Siin on näite kood: Deep Copy Constructor:

skanneriklasside meetodid javas
#include nimeruumi standardklassi testi kasutamine {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) // Siin nimetatakse tavalist konstruktorit test t2 = t1 // Kopeerimiskonstruktorit nimetatakse siin cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Väljund:

Selgitus

See on sama kood, mida oleme eespool kasutanud, andes sarnase väljundi. See on kasutaja määratletud koopiakonstruktor ja seega on tegemist sügava koopia konstruktoriga.

Seega oleme jõudnud artiklile ‘Copy Constructor in C ++’. Kui soovite rohkem teada saada, vaadake järgmist autor Edureka, usaldusväärne veebipõhine õppefirma. Edureka Java J2EE ja SOA koolitus- ja sertifitseerimiskursus on mõeldud selleks, et õpetada teid nii Java-põhimõistete kui ka edasijõudnute kontseptsioonide jaoks koos erinevate Java-raamistikega nagu Hibernate & Spring.

Kas teil on meile küsimus? Palun mainige seda selle ajaveebi kommentaaride jaotises ja võtame teiega ühendust niipea kui võimalik.