Kaip įdiegti kopijavimo konstruktorių C ++ versijoje?



Suprasti konstruktorius daugeliui buvo mįslė. Šis straipsnis padės jums paaiškinti „Copy Constructor C ++“ sąvoką

Supratimas Konstruktoriai daugeliui buvo mįslė. Šis straipsnis padės jums paaiškinti „Copy Constructor C ++“ sąvoką. Tolimesni patarimai bus aptarti šiame straipsnyje,

atvirkštiniai sveiko skaičiaus pitono skaitmenys

Taigi pradėkimesu šiuo straipsniu apie „Copy Constructor“ C ++





Kopijų konstruktorius yra konstruktorius, kuris inicijuoja klasės objektą naudodamas kitą tos pačios klasės objektą.

Sintaksė:



Mes turime raktinį žodį const, nes norime padaryti vertę pastovią ir įsitikinti, kad ji nėra modifikuota kažkur kode. Kaip ir numatytąjį konstruktorių, kopijos konstruktorių taip pat pateikia kompiliatorius. Tai vadinama numatytuoju kopijavimo konstruktoriumi. Kopijų konstruktoriai gali būti privatūs. Negalime nukopijuoti klasės objektų, kai kopijų konstruktorius yra privatus.

Čia yra kodo pavyzdys :

#include naudojant vardų srities standartinės klasės testą {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {testas t1 (7) // Čia vadinamas normalusis konstruktorius testas t2 = t1 // čia vadinamas kopijuojantis konstruktorius cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Išvestis:



Išvesties-kopijavimo konstruktorius C ++ formatu - „Edureka“

Paaiškinimas

Pirmiau nurodyta programa yra pagrindinis kopijų konstruktoriaus demonstracinis variantas. Mes turime klasės testą, kuriame yra privačių duomenų narys, kurio tipas yra int, vadinamas x. Tada mes turime parametruotą konstruktorių, kuris kintamiesiems x priskiria 7. Turime kopijų konstruktorių, kuris momentuoja t2 reikšmę su t1 verte. Siunčiamas t2 adresas, kuris turi t1 vertę ir priskiriamas x. Yra gavimo funkcija, kuri grąžina x vertę.

Pagrindinė funkcija turi klasės testo objektą, vadinamą t1. Su šiuo objektu susieta vertė, tai yra parametras. Pagrindinė funkcija turi dar vieną klasės testo objektą, vadinamą t2. Tai inicijuojama naudojant t1 kintamąjį ir čia iškviečiamas kopijos konstruktorius. Galiausiai, gavimo funkcija iškviečiama t1 ir t2 atžvilgiu, norint gauti x reikšmę.

java kaip klonuoti objektą

Tipai

Yra dviejų tipų kopijų konstruktorius.
⦁ „Shallow Copy Constructor“
⦁ Gilaus kopijavimo konstruktorius

Toliau einant su šiuo straipsniu apie „Copy Constructor“ C ++

Seklios kopijos kūrėjas:

„Shallow Copy Constructor“ yra numatytasis kopijavimo konstruktorius.

Pavyzdys:

Du žmonės vienu metu naudojasi duomenų baze ir keičia reikšmes per dvi skirtingas sistemas. Jei jie pakeis duomenų bazę, abu šie pakeitimai bus rodomi duomenų bazėje. Abu objektai nurodys tą pačią atminties vietą. Tai „Shallow Copy Constructor“. Tai dažniausiai atsitinka, kai dirbame su numatytuoju kopijų kūrėju. Štai kodo pavyzdys: „Shallow Copy Constructor“:

#include naudojant vardų srities standartinį 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 } 

Išvestis:

„Android Studio“ pamoka pradedantiesiems

Paaiškinimas:

Aukščiau pateiktame kode mes naudojame numatytąjį kopijavimo konstruktorių, kurį pateikia kompiliatorius. Taigi tai yra seklios kopijos konstruktorius.

Toliau einant su šiuo straipsniu apie „Copy Constructor“ C ++

Giliųjų kopijų konstruktorius

„Deep Copy Constructor“ yra vartotojo apibrėžtas kopijavimo konstruktorius.
Pavyzdžiui:
Kai du žmonės turi pateikti pranešimą ir jie abu kopijuoja iš to paties šaltinio, kopijos yra atskiros. Taigi, kai atliekate pakeitimus, tai neturi įtakos kitai kopijai. Tai „Deep Copy Constructor“. Abu objektai bus nukreipti į skirtingas atminties vietas, o vieno pakeitimai neturės jokio poveikio kitam. Atmintis yra dinamiškai paskirstoma.

Kodo pavyzdys: Gilios kopijos kūrėjas:

#include naudojant vardų srities standartinės klasės testą {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {testas t1 (7) // Čia vadinamas normalusis konstruktorius testas t2 = t1 // čia vadinamas kopijuojantis konstruktorius cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Išvestis:

Paaiškinimas

Tai tas pats kodas, kurį naudojome aukščiau, suteikiant panašų išėjimą. Tai vartotojo apibrėžtas kopijavimo konstruktorius, taigi ir gilios kopijos konstruktorius.

Taigi mes priėjome prie šio straipsnio „Copy Constructor C ++“ pabaigos. Jei norite sužinoti daugiau, patikrinkite autorius - patikima internetinė mokymosi įmonė „Edureka“. „Edureka“ „Java J2EE“ ir SOA mokymo ir sertifikavimo kursai skirti mokyti jus tiek pagrindinėms, tiek pažangesnėms „Java“ koncepcijoms kartu su įvairiomis „Java“ sistemomis, tokiomis kaip „Hibernate & Spring“.

Turite mums klausimą? Prašau tai paminėti šio tinklaraščio komentarų skiltyje, ir mes kuo greičiau susisieksime su jumis.