Paano Maipatupad ang Kopya ng Tagabuo Sa C ++?



Ang pag-unawa sa mga Tagabuo ay naging isang palaisipan para sa marami. Tutulungan ka ng artikulong ito na maipakilala ang konsepto ng Kopyahin ang Tagatayo Sa C ++

Pag-unawa Mga tagapagbuo ay naging isang palaisipan para sa marami. Tutulungan ka ng artikulong ito na maipakilala ang konsepto ng Kopyahin ang Tagatayo Sa C ++. Saklaw ang artikulong ito sa artikulong ito,

Kaya't magsimula tayokasama ang artikulong ito sa Copy Constructor sa C ++





Ang Copy Copy ay isang Tagatayo na nagpapasimula ng isang bagay ng isang klase gamit ang ibang bagay ng parehong klase.

Syntax:



Mayroon kaming keyword const dahil nais naming gawing pare-pareho ang halaga at tiyakin na hindi ito nababago sa isang lugar sa code. Tulad ng isang default na tagapagbuo, ang isang tagatayo ng kopya ay ibinibigay din ng tagatala. Tinatawag itong Default na Copy Constructor. Ang mga tagatayo ng kopya ay maaaring gawing pribado. Hindi namin maaaring kopyahin ang mga bagay ng klase kapag ginawa naming pribado ang tagatayo ng kopya.

Narito ang isang Halimbawa ng Code :

# isama ang paggamit ng namespace std class test {pribado: int x pampubliko: pagsubok (int x1) {x = x1} pagsubok (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Ang normal na tagapagbuo ay tinatawag dito test t2 = t1 // Ang copy konstruktor ay tinatawag dito cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Output:



Output-Kopyahin ang Tagatayo sa C ++ - Edureka

Paliwanag

Ang programa sa itaas ay isang pangunahing demo ng isang tagatayo ng kopya. Mayroon kaming isang pagsubok sa klase, na may isang pribadong kasapi ng data na uri ng int na tinatawag na x. Pagkatapos mayroon kaming isang parameterized konstruktor, na nagtatalaga ng 7 sa mga variable x. Mayroon kaming isang tagataguyod ng kopya, na nagsasaad ng halaga ng t2 na may halagang t1. Ang address ng t2 ay ipinadala na nagtataglay ng halaga ng t1 at nakatalaga sa x. Mayroong isang pag-andar ng get na magbabalik sa halaga ng x.

Ang pangunahing pagpapaandar ay may isang bagay ng pagsubok sa klase na tinatawag na t1. Mayroong isang halaga na nauugnay sa object na ito, ito ay isang parameter. Ang pangunahing pagpapaandar ay may isa pang bagay ng pagsubok sa klase na tinatawag na t2. Pinasimulan ito sa pamamagitan ng paggamit ng variable na t1 at ang tagatayo ng kopya ay tinawag dito. Panghuli, ang pagpapaandar na get ay tinatawag na patungkol sa t1 at t2 upang makuha ang halaga ng x.

Mga uri

Mayroong dalawang uri ng gumagawa ng kopya.
⦁ Mababaw na Tagatayo ng Kopya
⦁ Malalim na Tagatayo ng Kopya

pag-uuri ng pag-uuri ng c ++

Nagpapatuloy sa artikulong ito sa Copy Constructor sa C ++

Mababaw na tagatayo ng kopya:

Ang isang Mababaw na Konstruktor ng Kopya ay isang Default na Konstruktor ng Kopya.

Halimbawa:

mabibigo nang mabilis kumpara sa mabibigo nang ligtas

Dalawang tao ang nag-a-access ng isang database nang sabay at gumawa ng mga pagbabago sa mga halagang higit sa dalawang magkakaibang mga system. Kung gumawa sila ng mga pagbabago sa database pagkatapos, ang parehong mga pagbabagong ito ay ipapakita sa database. Ang parehong mga bagay ay magturo sa parehong lokasyon ng memorya. Ito ang Mababaw na Konstruktor ng Kopya. Karamihan ito ay nangyayari kapag nakikipagtulungan kami sa default na tagapagbuo ng kopya. Narito ang isang Halimbawa ng Code Para sa: Mababaw na Konstruktor ng Kopya:

# isama ang paggamit ng 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 } 

Output:

Paliwanag:

Sa code sa itaas, gumagamit kami ng isang default na tagapagbuo ng kopya na ibinigay ng tagatala. Samakatuwid ito ay isang Mababaw na Tagatayo ng Kopya.

Nagpapatuloy sa artikulong ito sa Copy Constructor sa C ++

Malalim na tagapagbuo ng kopya

Ang Deep Copy Constructor ay isang tagatukoy ng kopya na tinukoy ng gumagamit.
Halimbawa:
Kapag ang dalawang tao ay dapat gumawa ng isang pagtatanghal at pareho silang kopya mula sa iisang mapagkukunan, magkahiwalay ang mga kopya. Kaya, kapag gumawa ka ng mga pagbabago ang ibang kopya ay hindi apektado. Ito ang Deep Copy Consonstror. Ang parehong mga object ay tumuturo sa iba't ibang mga lokasyon ng memorya at ang mga pagbabago sa isa ay hindi magkakaroon ng anumang mga epekto sa iba pa. Ang memorya ay pabagu-bago na inilalaan.

Narito ang isang Halimbawa ng Code Para sa: Malalim na Kopya ng Tagabuo:

# isama ang paggamit ng namespace std class test {pribado: int x pampubliko: pagsubok (int x1) {x = x1} pagsubok (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Ang normal na tagapagbuo ay tinatawag dito test t2 = t1 // Ang copy konstruktor ay tinatawag dito cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Output:

Paliwanag

Ito ang parehong code na ginamit namin sa itaas, na nagbibigay ng katulad na output. Ito ay isang tinukoy ng gumagamit na Copy Consonstror at samakatuwid ito ay isang Deep Copy Consonstror.

Sa gayon ay natapos na kami sa artikulong ito sa 'Kopyahin ang Tagabuo sa C ++'. Kung nais mong matuto nang higit pa, tingnan ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online. Ang kurso sa pagsasanay at sertipikasyon ng Java J2EE at SOA ng Edureka ay idinisenyo upang sanayin ka para sa parehong core at advanced na mga konsepto ng Java kasama ang iba't ibang mga balangkas ng Java tulad ng Hibernate & Spring.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng blog na ito at babalikan ka namin sa lalong madaling panahon.