De grootste verschil tussen copy constructor en assignment-operator is dat copy constructor is een constructor die helpt bij het maken van een kopie van een bestaand object zonder de waarden van het originele object te beïnvloeden, terwijl toewijzingsoperator een operator is die helpt om een nieuwe waarde toe te kennen aan een variabele in het programma.
Een constructor is een speciale methode die helpt bij het initialiseren van een object bij het maken ervan. Het heeft dezelfde naam als de klassenaam en heeft geen retourtype. Een programmeur kan een constructor schrijven om beginwaarden te geven aan de instantievariabelen in de klasse. Als er geen constructor in het programma staat, wordt de standaardconstructor aangeroepen. Constructor kopiëren is een constructortype dat helpt bij het maken van een kopie van een bestaand object. Aan de andere kant helpt toewijzingsoperator om een nieuwe waarde aan een variabele toe te kennen.
1. Wat is Copy Constructor
- Definitie, functionaliteit
2. Wat is een toewijzingsbeheerder
- Definitie, functionaliteit
3. Wat is het verschil tussen Copy Constructor en Assignment Operator
- Vergelijking van belangrijke verschillen
Constructor, Copy Constructor, Assignment Operator, Variable
Bij het programmeren is het soms nodig om een afzonderlijke kopie van een object te maken zonder het oorspronkelijke object te beïnvloeden. Constructor kopiëren is handig in deze situaties. Hiermee kunt u een replicatie van een bestaand object van dezelfde klasse maken. Raadpleeg het onderstaande voorbeeld.
Figuur 1: Programma met kopieconstructor
De klasse Triangle heeft twee instantievariabelen die base en height worden genoemd. In regel 8 is er een geparametreerde constructor. Er zijn twee argumenten voor nodig. Deze waarden worden toegewezen aan de basis en lengte van de instantievariabelen. In regel 13 is er een kopieconstructor. Er is een argument voor nodig van het type Driehoek. De basiswaarde van nieuw object wordt toegewezen aan de basis van de instantievariabele. Evenzo wordt de hoogte van het nieuwe object toegewezen aan de variabele hoogte van het exemplaar. Verder is er een methode genaamd calArea om het gebied te berekenen en terug te sturen.
In de hoofdmethode zijn t1 en t2 driehoeksobjecten. Het object t1 wordt doorgegeven bij het maken van het object t2. De copy-constructor wordt aangeroepen om een t2-object te maken. Daarom zijn de basis en de hoogte van het object t2 hetzelfde als de basis en hoogte van het object t1. Ten slotte hebben beide objecten hetzelfde gebied.
Een toewijzingsoperator is handig om een nieuwe waarde aan een variabele toe te wijzen. De opdrachtoperator is "=". Wanneer er een verklaring is als c = a + b; de optelling van 'a' en 'b' wordt toegewezen aan de variabele 'c'.
Figuur 2: Programma met toewijzingsoperator
Het klassenummer heeft een instantievariabele genaamd num. Er is een no parameter constructor in regel 7. Er is echter een geparameteriseerde constructor in regel 9. Er is een argument voor nodig en dit wordt toegewezen aan de instantievariabele met behulp van de toewijzingsoperator. In regel 12 is er een methode genaamd display om het nummer weer te geven. In de hoofdmethode zijn num1 en num2 twee objecten van het type Number. Afdrukken van num1 en num2 geeft de verwijzingen naar die objecten. De num3 is van het type Nummer. In regel 24 wordt num1 toegewezen aan num3 met behulp van de toewijzingsoperator. Daarom verwijst num3 naar het num1-object. Het afdrukken van num3 geeft dus de num1-verwijzing.
De toewijzingsoperator en zijn variaties zijn als volgt.
operator | functionaliteit | Voorbeeld |
= | Wijst de juiste operand toe aan de linker operand | z = x + y |
+= | Voeg de juiste operand toe aan de linker operand en wijs het resultaat toe aan de linker operand | z + = y is gelijk aan z = z + y |
- = | Trek de rechter operand van de linker operand af en wijs het resultaat toe aan de linker operand. | z - = y is gelijk aan z = z -y |
* = | Vermenigvuldig de rechter operand met de linker operand en wijs het resultaat toe aan de linker operand. | z * = y is gelijk aan z = z * y |
/ = | Verdeelt de linkeroperand met rechter operand en wijst het antwoord toe aan de linkeroperand. | z / = y is gelijk aan z = z / y |
% = | Neemt de modulus van twee operanden en wijst het antwoord toe aan de linkeroperand. | z% = y is gelijk aan z = z% y |
<<= | Linker ploeg- en toewijzingsoperator | z << 5 is equivalent to z = z <<5 |
>> = | Right shift AND assignment-operator | z >> 5 is gelijk aan z = z >> 5 |
& = | Bitwise AND assignment-operator | z & = 5 is gelijk aan z = z & 5 |
^ = | Bitwise exclusieve OR- en toewijzingsoperator | z ^ = 5 is gelijk aan z = z ^ 5 |
| = | Bitwise inclusief OR- en toewijzingsoperator | z | = 5 is gelijk aan z = z | 5 |
Constructor kopiëren is een speciale constructor voor het maken van een nieuw object als een kopie van een bestaand object. Een toewijzingsoperator daarentegen is een operator die wordt gebruikt om een nieuwe waarde aan een variabele toe te wijzen. Deze definities verklaren het fundamentele verschil tussen copy constructor en assignment operator.
Functionaliteit met objecten is ook een groot verschil tussen copy constructor en assignment operator. Constructor kopiëren kopieert het nieuwe object in met een bestaand object terwijl toewijzingsoperator de waarde van één object toewijst aan een ander object dat al bestaat.
Constructor kopiëren helpt bij het maken van een kopie van een bestaand object, terwijl toewijzingsoperator helpt om een nieuwe waarde aan een variabele toe te wijzen. Dit is een ander verschil tussen copy constructor en assignment-operator.
Het verschil tussen copy-constructor en assignment-operator is dat copy-constructor een constructortype is dat helpt bij het maken van een kopie van een bestaand object zonder de waarden van het originele object te beïnvloeden, terwijl toewijzingsoperator een operator is die helpt een nieuwe waarde toe te wijzen aan een variabele in het programma.
1. Thakur, Dinesh. "Copy Constructor in Java Example." Computer Notes, hier beschikbaar.