Quelle est la différence entre le constructeur de copie et l'opérateur d'assignation

le différence principale entre le constructeur de copie et l'opérateur d'affectation est que Le constructeur de copie est un type de constructeur qui permet de créer une copie d'un objet existant sans affecter les valeurs de l'objet d'origine, tandis que l'opérateur d'affectation est un opérateur qui permet d'affecter une nouvelle valeur à une variable du programme..

Un constructeur est une méthode spéciale qui aide à initialiser un objet lors de sa création. Il porte le même nom que le nom de la classe et n'a aucun type de retour. Un programmeur peut écrire un constructeur pour donner des valeurs initiales aux variables d'instance de la classe. S'il n'y a pas de constructeur dans le programme, le constructeur par défaut sera appelé. Le constructeur de copie est un type de constructeur permettant de créer une copie d'un objet existant. D'autre part, l'opérateur d'affectation permet d'affecter une nouvelle valeur à une variable.

Zones clés couvertes

1. Qu'est-ce que Copy Constructor?
     - Définition, fonctionnalité
2. Qu'est-ce qu'un opérateur d'affectation?
     - Définition, fonctionnalité
3. Quelle est la différence entre le constructeur de copie et l'opérateur d'assignation
     - Comparaison des différences clés

Mots clés

Constructeur, constructeur de copie, opérateur d'assignation, variable

Qu'est-ce que Copy Constructor?

En programmation, il est parfois nécessaire de créer une copie distincte d'un objet sans affecter l'objet d'origine. Le constructeur de copie est utile dans ces situations. Il permet de créer une réplication d'un objet existant de la même classe. Reportez-vous à l'exemple ci-dessous.

Figure 1: Programme avec constructeur de copie

La classe Triangle a deux variables d'instance appelées base et height. Dans la ligne 8, il y a un constructeur paramétré. Il faut deux arguments. Ces valeurs sont affectées à la base et à la hauteur des variables d'instance. À la ligne 13, il y a un constructeur de copie. Il faut un argument de type Triangle. La valeur de base du nouvel objet est affectée à la base de variable d'instance. De même, la valeur de hauteur du nouvel objet est attribuée à la hauteur de la variable d'instance. En outre, il existe une méthode appelée calArea pour calculer et retourner la surface.

Dans la méthode principale, t1 et t2 sont des objets Triangle. L'objet t1 est passé lors de la création de l'objet t2. Le constructeur de copie est appelé pour créer un objet t2. Par conséquent, la base et la hauteur de l'objet t2 sont identiques à celles de la base et de la hauteur de l'objet t1. Enfin, les deux objets ont la même surface.    

Qu'est-ce qu'un opérateur d'affectation?

Un opérateur d'affectation est utile pour affecter une nouvelle valeur à une variable. L'opérateur d'affectation est "=". Quand il y a une déclaration comme c = a + b; la somme de 'a' et 'b' est assignée à la variable 'c'.

Figure 2: Programme avec opérateur d'affectation

La classe Number a une variable d'instance appelée num. Il existe un constructeur sans paramètre dans la ligne 7. Cependant, il existe un constructeur paramétré dans la ligne 9. Il prend un argument et l'assigne à la variable d'instance à l'aide de l'opérateur d'affectation. À la ligne 12, il existe une méthode appelée display pour afficher le numéro. Dans la méthode principale, num1 et num2 sont deux objets de type Number. L'impression num1 et num2 donne les références à ces objets. Le num3 est de type Number. À la ligne 24, num1 est attribué à num3 à l'aide de l'opérateur d'attribution. Par conséquent, num3 fait référence à l'objet num1. Ainsi, l’impression num3 donne la référence num1.  

L'opérateur d'affectation et ses variantes sont les suivants.

Opérateur

La fonctionnalité

Exemple

=

Assigne l'opérande droit à l'opérande gauche

 z = x + y

+=

Ajouter l'opérande droit à l'opérande gauche et affecter le résultat à l'opérande gauche

z + = y est équivalent à z = z + y

- =

Soustrayez l'opérande droit de l'opérande gauche et affectez le résultat à l'opérande gauche.

z - = y est équivalent à

z = z -y

* =

Multipliez l'opérande droit avec l'opérande gauche et affectez le résultat à l'opérande gauche.

z * = y est équivalent à

z = z * y

/ =

Divise l'opérande gauche avec l'opérande droit et affecte la réponse à l'opérande gauche.

z / = y est équivalent à

z = z / y

% =

Prend le module de deux opérandes et assigne la réponse à l'opérande gauche.

z% = y est équivalent à

z = z% y

<<=

Décalage à gauche ET opérateur d'affectation

z << 5 is equivalent to

 z = z <<5

>> =

Décalage droit ET opérateur d'affectation

z >> 5 équivaut à

 z = z >> 5

& =

Opérateur d'affectation AND

z & = 5 équivaut à

z = z & 5

^ =

Opérateur OU exclusif et attribut binaire

z ^ = 5 est équivalent à

z = z ^ 5

| =

Opérateur OU d'affectation inclusif au niveau du bit

z | = 5 est équivalent à z = z | 5

Différence entre le constructeur de copie et l'opérateur d'assignation

Définition

Le constructeur de copie est un constructeur spécial permettant de créer un nouvel objet en tant que copie d'un objet existant. En revanche, opérateur d'affectation est un opérateur utilisé pour affecter une nouvelle valeur à une variable. Ces définitions expliquent la différence fondamentale entre le constructeur de copie et l'opérateur d'affectation.

Fonctionnalité avec des objets

La fonctionnalité avec les objets constitue également une différence majeure entre le constructeur de copie et l'opérateur d'affectation. Le constructeur de copie initialise le nouvel objet avec un objet déjà existant, tandis que l'opérateur d'affectation attribue la valeur d'un objet à un autre objet déjà existant..

Usage

Le constructeur de copie permet de créer une copie d'un objet existant alors que l'opérateur d'affectation permet d'affecter une nouvelle valeur à une variable. C'est une autre différence entre le constructeur de copie et l'opérateur d'affectation.

Conclusion

La différence entre le constructeur de copie et l'opérateur d'affectation est que le constructeur de copie est un type de constructeur permettant de créer une copie d'un objet existant sans affecter les valeurs de l'objet d'origine, tandis que l'opérateur d'affectation est un opérateur aidant à affecter une nouvelle valeur. une variable dans le programme.

Référence:

1. Thakur, Dinesh. "Copier le constructeur dans l'exemple Java." Notes d'ordinateur, disponibles ici.