Care este diferența dintre constructorul de copiere și operatorul de asignare

principala diferență între constructorul de copiat și operatorul de atribuire este asta constructorul de copiere este un tip de constructor care ajută la crearea unei copii a unui obiect deja existent fără a afecta valorile obiectului original, în timp ce operatorul de atribuire este un operator care ajută la atribuirea unei noi valori unei variabile din program.

Un constructor este o metodă specială care ajută la inițializarea unui obiect atunci când îl creați. Are același nume cu numele clasei și nu are un tip de retur. Un programator poate scrie un constructor pentru a da valorile inițiale variabilelor de instanță din clasă. Dacă nu există constructor în program, va fi apelat constructorul implicit. Constructorul de copiere este un tip de constructor care ajută la crearea unei copii a unui obiect existent. Pe de altă parte, operatorul de atribuire ajută la atribuirea unei valori noi unei variabile.

Domenii cheie acoperite

1. Ce este Copy Constructor
     - Definiție, funcționalitate
2. Ce este Operatorul de alocare
     - Definiție, funcționalitate
3. Care este diferența dintre constructorul de copiere și operatorul de asignare
     - Compararea diferențelor cheie

Termeni cheie

Constructor, Constructor de copiere, Operator asignare, Variabilă

Ce este Copy Constructor

În programare, uneori este necesar să creați o copie separată a unui obiect fără a afecta obiectul original. Constructorul de copiere este util în aceste situații. Permite crearea unei replicări a unui obiect existent din aceeași clasă. Consultați exemplul de mai jos.

Figura 1: Program cu constructor de copiere

Triunghiul de clasă are două variabile de instanță numite bază și înălțime. În linia 8, există un constructor parametrizat. Este nevoie de două argumente. Aceste valori sunt atribuite baza și înălțimii variabilelor de instanță. În linia 13, există un constructor de copiatoare. Este nevoie de un argument de tip Triangle. Valoarea de bază a unui obiect nou este atribuită bazei variabilei de instanță. În mod similar, valoarea înălțimii noului obiect este atribuită înălțimii variabilei de instanță. În plus, există o metodă numită calArea pentru calcularea și returnarea zonei.

În metoda principală, t1 și t2 sunt obiecte Triangle. Obiectul t1 este trecut la crearea obiectului t2. Constructorul de copiere este chemat să creeze un obiect t2. Prin urmare, baza și înălțimea obiectului t2 sunt aceleași ca baza și înălțimea obiectului t1. În cele din urmă, ambele obiecte au aceeași zonă.    

Ce este Operatorul de alocare

Un operator de atribuire este util să atribuiți o nouă valoare unei variabile. Operatorul de atribuire este "=". Atunci când există o declarație ca c = a + b; suma "a" și "b" este atribuită variabilei "c".

Figura 2: Program cu operatorul de atribuire

Numărul de clasă are o variabilă de instanță numită num. Există un constructor de parametri în rândul 7. Totuși, există un constructor parametrizat în rândul 9. Este nevoie de un argument și îl atribuie variabilei instanței utilizând operatorul de atribuire. În linia 12, există o metodă numită afișare pentru afișarea numărului. În metoda principală, num1 și num2 sunt două obiecte de tipul Number. Imprima num1 și num2 dă trimiterile la acele obiecte. Numarul 3 este de tipul Number. În linia 24, num1 este atribuit num3 folosind operatorul de atribuire. Prin urmare, num3 se referă la num1 obiect. Prin urmare, tipărirea num3 dă referința num1.  

Operatorul de atribuire și variațiile acestuia sunt după cum urmează.

Operator

Funcționalitate

Exemplu

=

Alocă operandul drept cu operandul din stânga

 z = x + y

+=

Adăugați operandul drept la operandul din stânga și asociați rezultatul operandului din stânga

z + = y este echivalent cu z = z + y

- =

Extrageți operandul din operatorul din stânga și asociați rezultatul operandului stâng.

z - = y este echivalent cu

z = z -y

* =

Multiplicați operandul drept cu operandul din stânga și asociați rezultatul cu operandul stâng.

z * = y este echivalent cu

z = z * y

/ =

Împarte operandul din stânga cu operandul drept și alocă răspunsul la operandul din stânga.

z / = y este echivalent cu

z = z / y

% =

Dorește modulul celor doi operanzi și atribuie răspunsul operandului stâng.

z% = y este echivalent cu

z = z% y

<<=

Operatorul de schimbare stânga și atribuire

z << 5 is equivalent to

 z = z <<5

>> =

Operatorul de transfer de sarcină și de atribuire

z >> 5 este echivalentul lui

 z = z >> 5

& =

Operatorul de atribuire biți ȘI ȘI

z = 5 este echivalent cu

z = z & 5

^ =

Operatorul de atribuire exclusiv OR și operația de atribuire

z = 5 este echivalent cu

z = z ^ 5

| =

Operatorul de alocare a biților OR și operatorul de atribuire

z | = 5 este echivalent cu z = z | 5

Diferența dintre constructorul de copiere și operatorul de asignare

Definiție

Constructorul de copiere este un constructor special pentru crearea unui obiect nou ca o copie a unui obiect existent. În schimb, operatorul de atribuire este un operator care este folosit pentru a atribui o nouă valoare unei variabile. Aceste definiții explică diferența de bază între constructorul de copiere și operatorul de atribuire.

Funcționalitatea cu obiectele

Funcționalitatea cu obiectele este, de asemenea, o diferență majoră între constructorul de copiere și operatorul de atribuire. Constructorul de copiere inițializează noul obiect cu un obiect deja existent, în timp ce operatorul de atribuire atribuie valoarea unui obiect unui alt obiect care există deja.

folosire

Constructorul de copiere ajută la crearea unei copii a unui obiect existent, în timp ce operatorul de asignare ajută la atribuirea unei valori noi unei variabile. Aceasta este o altă diferență între constructorul de copiere și operatorul de atribuire.

Concluzie

Diferența dintre constructorul de copiere și operatorul de atribuire este că constructorul de copiere este un tip de constructor care ajută la crearea unei copii a unui obiect deja existent, fără a afecta valorile obiectului original, în timp ce operatorul de atribuire este un operator care ajută la atribuirea unei noi valori o variabilă în program.

Referinţă:

1. Thakur, Dinesh. "Copy Constructor în Java Exemplu." Note de computer, disponibil aici.