Kā ieviest kopiju veidotāju C ++ versijā?



Izpratne par konstruktoriem daudziem ir bijusi mīkla. Šis raksts palīdzēs jums noteikt kopiju veidotāja jēdzienu C ++

Saprašana Konstruktori daudziem ir bijusi mīkla. Šis raksts palīdzēs jums noteikt kopiju veidotāja jēdzienu C ++. Šajā rakstā tiks apskatīti šādi norādījumi,

Tāpēc ļaujiet mums sākt darbuar šo rakstu par Copy Constructor C ++





Copy Constructor ir konstruktors, kas inicializē klases objektu, izmantojot citu tās pašas klases objektu.

fibonacci c ++ rekursīvs

Sintakse:



Mums ir atslēgvārds const, jo mēs vēlamies padarīt vērtību nemainīgu un pārliecināties, ka tā nav modificēta kaut kur kodā. Tāpat kā noklusējuma konstruktoru, kopijas konstruktoru nodrošina arī sastādītājs. To sauc par noklusējuma kopiju veidotāju. Kopiju konstruktorus var padarīt privātus. Mēs nevaram kopēt klases objektus, padarot kopiju veidotāju privātu.

Šeit ir koda piemērs :

#include izmantojot nosaukumvietas standartklases testu {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {tests t1 (7) // Parasto konstruktoru šeit sauc par testu t2 = t1 // Kopiju konstruktoru šeit sauc par cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Izeja:



Izejas-kopijas konstruktors C ++ versijā - Edureka

Paskaidrojums

Iepriekš minētā programma ir kopiju konstruktora pamata demonstrācija. Mums ir klases tests ar privātu datu locekli, kura tips ir int, ko sauc par x. Tad mums ir parametrizēts konstruktors, kurš piešķir mainīgajiem x 7. Mums ir kopiju konstruktors, kas momentāno t2 vērtību ar t1 vērtību. Tiek nosūtīta t2 adrese, kurai ir t1 vērtība un kas piešķirta x. Pastāv get funkcija, kas atgriež x vērtību.

Galvenajai funkcijai ir klases testa objekts ar nosaukumu t1. Ar šo objektu ir saistīta vērtība, tas ir parametrs. Galvenajai funkcijai ir vēl viens klases testa objekts ar nosaukumu t2. To inicializē, izmantojot mainīgo t1, un šeit tiek izsaukts kopiju konstruktors. Visbeidzot, get funkciju izsauc attiecībā pret t1 un t2, lai iegūtu x vērtību.

Veidi

Ir divu veidu kopiju konstruktors.
⦁ Seklo kopiju veidotājs
⦁ Dziļās kopēšanas konstruktors

Turpinot šo rakstu par Copy Constructor C ++

Seklo kopiju veidotājs:

Sekla kopiju veidotājs ir noklusējuma kopiju veidotājs.

Piemērs:

Divi cilvēki vienlaikus piekļūst datu bāzei un veic izmaiņas vērtībās divās dažādās sistēmās. Ja viņi veic izmaiņas datubāzē, abas šīs izmaiņas tiks parādītas datu bāzē. Abi objekti norādīs uz to pašu atmiņas vietu. Šis ir seklo kopiju veidotājs. Tas galvenokārt notiek, kad mēs strādājam ar noklusējuma kopiju veidotāju. Šeit ir koda piemērs: Seklo kopiju veidotājs:

#include izmantojot nosaukumvietas standartklases testu {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 } 

Izeja:

Paskaidrojums:

Iepriekš minētajā kodā mēs izmantojam noklusējuma kopiju konstruktoru, ko nodrošina kompilators. Tādējādi tas ir seklu kopiju veidotājs.

Turpinot šo rakstu par Copy Constructor C ++

tabula, kā sapludināt datus

Dziļo kopiju konstruktors

Deep Copy Constructor ir lietotāja definēts kopiju konstruktors.
Piemēram:
Kad diviem cilvēkiem ir jāuzrāda prezentācija un viņi abi kopē no viena avota, kopijas ir atsevišķas. Tātad, veicot modifikācijas, tas neietekmē tikai otru kopiju. Tas ir Deep Copy Constructor. Abi objekti būs vērsti uz dažādām atmiņas vietām, un vienas izmaiņas neietekmēs otru. Atmiņa tiek dinamiski piešķirta.

Šeit ir koda piemērs: padziļinātas kopēšanas konstruktors:

#include izmantojot nosaukumvietas standartklases testu {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {tests t1 (7) // Parasto konstruktoru šeit sauc par testu t2 = t1 // Kopiju konstruktoru šeit sauc par cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Izeja:

Paskaidrojums

Šis ir tas pats kods, kuru mēs izmantojām iepriekš, dodot līdzīgu izvadi. Tas ir lietotāja definēts kopiju veidotājs, un līdz ar to tas ir dziļu kopiju veidotājs.

Tādējādi mēs esam nonākuši pie šī raksta par “Copy Constructor in C ++” beigām. Ja vēlaties uzzināt vairāk, iepazīstieties ar Autors: uzticams tiešsaistes mācību uzņēmums Edureka. Edureka Java J2EE un SOA apmācības un sertifikācijas kurss ir paredzēts, lai apmācītu jūs gan galvenajiem, gan uzlabotajiem Java jēdzieniem kopā ar dažādiem Java ietvariem, piemēram, Hibernate & Spring.

Vai mums ir jautājums? Lūdzu, pieminējiet to šī emuāra komentāru sadaļā, un mēs sazināsimies ar jums pēc iespējas ātrāk.