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

Table des matières:

Anonim

Les 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 déjà existant sans affecter les valeurs de l'objet d'origine, tandis que l'opérateur d'affectation est un opérateur qui permet d'attribuer une nouvelle valeur à une variable du programme.

Un constructeur est une méthode spéciale qui permet d'initialiser un objet lors de sa création. Il porte le même nom que le nom de la classe et n'a pas de 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 qui permet 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.

Constructeur, Constructeur de copie, Opérateur d'affectation, Variable

Qu'est-ce que le constructeur de copie

En programmation, il est parfois nécessaire de créer une copie séparée 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. Référez-vous à l'exemple ci-dessous.

Figure 1: programme avec constructeur de copie

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

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 l'objet t2. Par conséquent, la base et la hauteur de l'objet t2 sont les mêmes que la base et la hauteur de l'objet t1. Enfin, les deux objets ont la même surface.

Qu'est-ce que l'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 affectée à la variable « c ».

Figure 2: Programme avec opérateur d'affectation

La classe Number a une variable d'instance appelée num. Il y a un constructeur sans paramètre à la ligne 7. Cependant, il y a un constructeur paramétré à la ligne 9. Il prend un argument et l'affecte à 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 de num1 et num2 donne les références à ces objets. Le num3 est de type Nombre. À la ligne 24, num1 est affecté à num3 à l'aide de l'opérateur d'affectation. Par conséquent, num3 fait référence à l'objet num1. Ainsi, l'impression de num3 donne la référence num1.

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

Opérateur

Fonctionnalité

Exemple

=

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

z = x +y

+=

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

z += y équivaut à z = z +y

– =

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

z -= y est équivalent à

z = z -y

* =

Multipliez l'opérande de droite par l'opérande de gauche et attribuez le résultat à l'opérande de gauche.

z *=y est équivalent à

z = z*y

/=

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

z / = y est équivalent à

z = z/y

%=

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

z % = y est équivalent à

z = z % y

<<=

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

z << 5 équivaut à

z= z <<5

>>=

Opérateur de décalage ET d'affectation à droite

z >>5 équivaut à

z= z>>5

&=

Opérateur d'affectation AND au niveau du bit

z&=5 est équivalent à

z = z&5

^=

OU exclusif au niveau du bit et opérateur d'affectation

z ^=5 équivaut à

z = z^5

|=

OU inclusif au niveau du bit et opérateur d'affectation

z |= 5 équivaut à z = z|5

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

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, l'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 est é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 affecte la valeur d'un objet à un autre objet qui existe déjà.

Usage

Le constructeur de copie permet de créer une copie d'un objet existant tandis que l'opérateur d'affectation permet d'attribuer 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 qui permet de créer une copie d'un objet déjà 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 dans le programme.

Référence:

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

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